一:Reader与Writer
Java提供一些字符流类,以字符为单位读写数据,专门用于处理文本文件。不能操作照片,视频等非文本文件;
1、字符输入流:Reader
java.io.Reader
抽象类是表示用于读取字符流的所有类的父类,可以读取字符信息到内存中。
- public int read():从输入流读取一个字符,自动提升为int类型,返回该字符的Unicode编码值,如果到达末尾,返回-1;
- public int read(char[] cbuf):从输入流中读取一些字符,并将它们存储到字符数组 cbuf中 。每次最多读取cbuf.length个字符。返回实际读取的字符个数。如果已经到达流末尾,没有数据可读,则返回-1
- public int read(char[] cbuf,int off,int len):从输入流中读取一些字符,并将它们存储到字符数组 cbuf中,从cbuf[off]开始的位置存储。每次最多读取len个字符。返回实际读取的字符个数。如果已经到达流末尾,没有数据可读,则返回-1。
- public void close():关闭此流并释放与此流相关联的任何系统资源。
2、字符输出流:Writer
java.io.write抽象类是表示用于写出字符流的所有类的超类,将指定的字符信息写出到目的地。它定义了字节输出流的基本共性功能方法。
- public void write(int c): 写出单个字符;
- public void write(char[] cbuf): 写出字符数组;
- public void write(char[] cbuf,int off,int len): 写出字符数组的某一部分。off:数组的开始索引;len:写出的字符个数;
- public void write(String str): 写出字符串;
- public void write(String str,int off,int len): 写出字符串的某一部分。off: 字符串的开始索引;len: 写出的字符个数;
- public void flush(): 刷新该流的缓冲;
- public void close(): 关闭此流
二:FileReader与FileWriter
1、FileReader
java.io.FileReader类用于读取字符文件,构造时使用系统默认的字符编码和默认字节缓冲区;
- FileReader(File file): 创建一个新的FileReader,给定要读取的File对象;
- FileReader(String fileName): 创建一个新的FileReader,给定要读取的文件的名称;
@Test
public void test6() throws IOException {
FileReader fr = null;
try {
File file = new File("D:\\2024TianYuShiJie\\2024TianYuDataSource\\20241111资源\\hello.txt");
fr = new FileReader(file);
char[] cbuf = new char[5];
int len;
while ((len = fr.read()) != -1) {
String str = new String(cbuf, 0, len);
System.out.println(str);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (fr != null) {
fr.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
2、FileWriter
java.io.FileWriter类用于写出字符到文件,构造时使用系统默认的字符编码和默认字节缓冲区。
- FileWriter(File file):创建一个新的FileWriter,给定要读取的File对象;
- FileWriter(String fileName):创建一个新的FileWriter,给定要读取的文件的名称;
- FileWriter(File file,boolean append):创建一个新的FileWriter,指明是否在现有文件末尾追加内容。
public void test9(){
FileWriter fw = null;
try{
File file = new File("D:\\2024TianYuShiJie\\2024TianYuDataSource\\20241114资源\\hello.txt");
fw = new FileWriter(file);
fw.write("I LOVE YOU");
fw.write("you love me");
fw.write("so bad".toCharArray());
}catch(IOException e){
e.printStackTrace();
}finally {
try{
if(fw != null)
fw.close();;
}catch (IOException e){
throw new RuntimeException(e);
}
}
}