JAVA单排日记-2020/1/26_IO流-字符流

1.Write字符输入流

  • 共性的成员方法
write(int c) 写入单个字符
write(char[] c) 写入字符数组
write(char[],int off,int len) 写入字符数组的一部分
write(String str) 写入字符串
write(String str,int off,int len) 写入字符串的一部分
flush() 刷新该流的缓冲
close() 关闭此流

1.1FileWriter文件字符输入流

  1. 作用:把内存中的数据以字符的方式写入到硬盘中,可以避免中文乱码问题
  2. 构造方法:
FileWriter(String name) 写入数据的目的地是一个文件的路径
FileWriter(File file)  写入数据的目的地是一个文件
  • 字符输出流的使用步骤
  1. 创建一个创建一个FileWriter对象,构造方法中填写写入数据的目的地
FileWriter file = new FileWriter("G:\\Java\\测试文件夹2\\b.txt");
  1. 调用创建对象的write方法,把数据写入到内存缓冲区(字符转换为字节的过程)
file.write(98);
  1. 调用创建对象的flush方法,将内存缓冲区中的数据,刷新到文件中(可以不用写,close会自动刷新)
file.flush();
  1. 释放资源
file.close();
  • 字符输出流写入数据的其他方法
  • 写完整字符数组
  • 写部分字符数组
import java.io.FileWriter;
import java.io.IOException;

public class Writer {
    public static void main(String[] args) throws IOException {
        FileWriter file = new FileWriter("G:\\Java\\测试文件夹2\\b.txt");

        char[] chars = {'a', 'b', 'v', '你', '好'};
        file.write(chars);
        file.flush();

        file.write(chars, 3, 2);
        file.flush();
        file.close();
    }
}

在这里插入图片描述

  • 写完整字符串
  • 写部分字符串
import java.io.FileWriter;
import java.io.IOException;

public class Demo02 {
    public static void main(String[] args) throws IOException {
        FileWriter fileWriter = new FileWriter("G:\\Java\\测试文件夹2\\c.txt");
        fileWriter.write("你好,再见!");
        fileWriter.flush();
        
        fileWriter.write("123asd123",3,3);
        fileWriter.flush();
        fileWriter.close();
    }
}

在这里插入图片描述

  • 续写和换行

  • 续写
    构造方法中:

FileWriter(String name,boolean append) 写入数据的目的地是一个文件的路径,append为true则不会覆盖原文件,继续在原文件中续写,append为false则覆盖原文件
FileWiter(File file,boolean append)  写入数据的目的地是一个文件,append为true则不会覆盖原文件,继续在原文件中续写,append为false则覆盖原文件
  • 换行:写换行符号

windows:\r\n
Linux:/n
Mac:/r

2.Reader字符输入流

  • 共性的成员方法
int len = read();   一次性读取一个字符
int len = read(char[] c);  一次性读取多个字符
close();  释放资源

Reader类为抽象类,无法直接使用,需要创造子类使用

2.1FileReader文件字符输入流

  1. 作用:把硬盘的文件中的数据以字符的方式读取到内存中,可以避免中文乱码问题
  2. 构造方法:
FileReader file = new FileReader(String name);
FileReader file = new FileReader(File file);
  • 使用步骤
  1. 创建一个创建一个FileReader对象,构造方法中填写读取文件的数据源
FileReader file = new FileReader("G:\\Java\\测试文件夹2\\a.txt");
  1. 调用对象的read()方法,读取文件
int len = 0;
while ((len=fr.read())!=-1){
    System.out.print((char)len);
}
  1. 释放内存
fr.close();
package Reader;

import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.io.Reader;

public class Demo01 {
    public static void main(String[] args) throws IOException {
        FileReader fr= new FileReader("G:\\Java\\测试文件夹2\\qqq.txt");
        int len = 0;
        while ((len=fr.read())!=-1){
            System.out.print((char)len);
        }
        fr.close();
    }
}

在这里插入图片描述

  • 注意:中文乱码问题:
    在这里插入图片描述
  • 一次读多个字符的方法
int len = 0;
char[] chars = new char[1024];
while ((len=fr.read(chars))!=-1){
    System.out.print(new String(chars,0,len));
}
package Reader;

import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.io.Reader;

public class Demo01 {
    public static void main(String[] args) throws IOException {
        FileReader fr= new FileReader("G:\\Java\\测试文件夹2\\qqq.txt");
        int len = 0;
        char[] chars = new char[1024];
        while ((len=fr.read(chars))!=-1){
            System.out.print(new String(chars,0,len));
        }
        fr.close();
    }
}

在这里插入图片描述

发布了103 篇原创文章 · 获赞 1 · 访问量 2648

猜你喜欢

转载自blog.csdn.net/wangzilong1995/article/details/104088942