JAVA--字符流

字符流

1.字符输入输出流

字符输出流

  • java程序输出数据到文件

创建输出流文件

  • 绝对路径:(d://test_1.txt)
  • 相对路径:(test_1.txt) 相对于存放在编译文件目录;
  1. new FileWrite(filename);
public static void main(String[] args) throws IOExpection { 
    FileWriter fw = new FileWriter(d://java_1/test_1.txt);
    }
  1. new FileWrite(filename;boole append):
    append默认false,默认不可以持续添加;

输出信息

  1. void write(String str);
  2. void write(String str,int index,int len);
  3. void write(int ch);
  • int ch --> char(int类型输出为char类型)
  1. void write(char[] chs);
  2. void write(char[] chs,int index,int len);
fw.write("IO流")
//系统基本单位:字节,写入时只存放在系统缓冲区;

刷新缓存区

fw.flush();
//刷新缓冲区,将信息写入文件,刷新后可再调用流文件;

释放资源

fw.close();
//先刷新缓冲区,后通知系统释放调用所有相关资源,释放后,流对象无法再调用;
  • 换行
  1. /n --> java换行
  2. /r/n --> window换行
  3. /r --> mac换行

字符输入流

  • 序从文件读取数据,输入到java程序
    创建输入流文件
public static void main(String[] args) throws IOExpection { 
    FileReader fr = new FileReader("d://fr_1.txt");
}

读取信息

1. 一次读取一个字符

  • int read();
  • int i = fr.read();
  • System.out.print(i)–> 输出int:I值(需要强制转化);
int ch = fr.read();
//创建接收字符ch;
System.out.print(ch);
//输出为int类型;
System.out.print((char)ch);
//将int类型强转为char类型;

遍历输入流文件

  • 当文件为空时,输出-1;
while (ch = fr.read() != -1) {
    System.out.print((char)ch);
}

2. 一次读取一个字符数组

  • int read(char[] ch);
  • System.out.print(fw.read(ch)) --> 输出读取ch数组的长度;
char[] ch = new char[1024];
int len = fr.read(ch);
//ch数组的读取长度
System.out.print(new String(ch,0,len);
//为什么不用System.out.print(ch) -->无法控制输出长度,以免输出不必要的元素;

复制文件

  • 但字符,或字符数组为空时,返回值为-1,停止输出文件;
  1. 字符
FileWriter fw = new FileWriter("IOTest.txt");
FileReader fr = new FileReader("IOwrite_1.java");
int ch;
while(( ch = fr.read()) != -1) {
    fw.write(ch);
    //不用强转char类型,write会进行强转,read输出时就需要强转;
}

fw.close();
fr.close();
  1. 字符数组
FileWriter fw = new FileWriter("iotest.txt");
FileReader fr = new FileReader("IOTest.java");

char[] ch = new char[1024];
int len;
while ((len = fr.read(ch)) != -1) {
    fw.write(new String(ch,0,len));
}

fr.close();
fw.close();

2. 字符缓存输入输出流

  • 更高效的输入输出流;
  • 包装流;

字符缓存输出流

  • 创建字符缓存流输出对象
  • 构造函数:BufferedWriter bw = new BufferedWriter(Writer);
  • Writer w = new FileWriter(“test.txt”);//向上转型;
BufferedWriter bw = new BufferedWriter(new FileWriter("test.txt"));
  • 输出换行符
    void nextLine();
for(int x = 0; x < 3; x++) {
    bw.write("hello" + x);
    bw.nextLine();
    //输出到文档结果:
    hello0
    hello1
    hello2
}

字符缓存输入流

  • 创建字符缓存流输入对象
BufferedReader br = new BufferedReader(new FileReader("test.java"));
  • 输入字符串
    String readLine();
String str = br.readLine();
System.out.print(str);

遍历输入

  • 当字符串为空,null,结束读取
while ((str = br.read()) != null) {
    System.out.print(str);
}

复制文件

  1. 字符和字符数组同输入输出流;
  2. readLine()和nextLine();
  • 当输入文件流对象读取到字符串为null时,停止读取;
BufferedReader br = new BufferedReader(new FileReader("IOTest.java"));
    BufferedWriter bw = new BufferedWriter(new FileWriter("bw_1.txt"));

    String str;
    while((str = br.readLine()) != null) {
    //当输入文件流对象读取到字符串为null时,停止读取;
        bw.write(str);
        bw.newLine();
        bw.flush();
    }

    br.close();
    bw.close();

猜你喜欢

转载自blog.csdn.net/weixin_40107544/article/details/88615809