字符流是什么
字符流是可以直接读取字符的io流
字符流读取字符,就要先读去到字节数据,然后转为字符,如果要写出字符,需要把字符转为字节再写出。
字符流的两个抽象父类:字符输出流:Writer 和字符输入流:Reader
java.io.Writer抽象类时标识用于写出字符流的所有类的超类,将指定的字符信息写出到目的地。它定义了字节输出流的基本共性功能方法。
1.关闭此输入流并释放与此流相关的任何系统资源。
public void close();
2.从输入流读取数据的下一个字节
public abstract int read();
3.从输入流中读取一些字节数,并将他们存储到字节数组b中
public int read(byte[]b);
FileWriter类
java.io.FileWriter类是写出字符到文件的便利类。构造时使用系统默认的字符编码和默认字节缓冲区。
作用:把内存中的字符数据写入到文件中
FileInputStream类
案例:
public static void main(String[] args) throws IOException {
//输入流:内存的内容输出到文件(写操作) 输出流:文件内容输入到内存中(读操作)
File f1=new File("C:/aa");
f1.mkdirs();
File f2=new File(f1,"a.txt");
f2.createNewFile();
InputStream input= new FileInputStream(f2);
//读取文件的一个字符,然后把字符转换为对于的数字返回,如果读取到文件尾部,返回-1
int n;
while((n=input.read())!=-1){
System.out.println((char)n);
}
}
使用read(byte [] b) 缓冲区循环读取内容
public static void main(String[] args) throws IOException {
//输入流:内存的内容输出到文件(写操作) 输出流:文件内容输入到内存中(读操作)
File f1=new File("C:/aa");
f1.mkdirs();
File f2=new File(f1,"a.txt");
f2.createNewFile();
InputStream input= new FileInputStream(f2);
//读取文件的一个字符,然后把字符转换为对于的数字返回,如果读取到文件尾部,返回-1
int n;
byte[] b=new byte[10];
//使用read(byte [] b) 缓冲区循环读取内容
while((n=input.read(b))!=-1){
String s=new String(b,0,n);//从0开始,截取有效的字节n
System.out.println(s);
}
}