常见的构造方法:
FileWriter(String fileName) 根据给定的文件名构造一个 FileWriter 对象。
FileWriter(String fileName, boolean append) 根据给定的文件名以及指示是否附加写入数据的 boolean 值来构造 FileWriter 对象。
String fileName代表的是文件的路径,如果没有这个文件,会自动创建。
常见的方法:
1.write
void write(String str):写一个字符串数据
void write(String str,int index,int len):写一个字符串中的一部分数据
void write(int ch):写一个字符数据,这里写int类型的好处是既可以写char类型的数据,也可以写char对应的int类型的值。‘a‘,97
void write(char[] chs):写一个字符数组数据
void write(char[] chs,int index,int len):写一个字符数组的一部分数据
2.close
object.close() 关闭文件,释放资源
3.flush
object.flush() 刷新缓冲区。流对象还可以继续使用。
注意其和close()的区别,close是先刷新缓冲区,然后通知系统释放资源。流对象不可以再被使用了。
所以说close在释放资源前会刷新一次缓冲区。
常见的构造方法:
FIleReader(String FileName) 在给定从中读取数据的文件名的情况下创建一个新 FileReader。
常见的方法:
1.read()
read()方法 一次只读一个字符,返回的是对应的编码值,int类型。
示例:
public class FileReaderDemo { public static void main(String[] args) throws IOException { FileReader fr = new FileReader("/home/chichung/桌面/test"); int ch = fr.read(); System.out.println(ch); System.out.println((char)ch); fr.close() }
注意,当没有数据可以读时,返回值是int -1。可以根据这个结束条件写一个循环把所有数据读出来。
public class FileReaderDemo { public static void main(String[] args) throws IOException { FileReader fr = new FileReader("/home/chichung/桌面/test"); int ch; while ((ch=fr.read()) != -1){ System.out.print((char)ch); } fr.close(); // 记得释放资源 } }
2.read(char[] cbuf)
当文件很大时,一个一个字符去读取效率太低了。所以一般是多个字符一起读取。read方法可以接收一个字符数组。一般数组的长度定义为1024或整数倍,视内存而定。
示例:
public class FileReaderDemo2 { public static void main(String[] args) throws IOException { char[] arr = new char[3]; // 这里只是实验才用的3,具体情况视内存而定 FileReader fr = new FileReader("/home/chichung/桌面/test"); int len; // len=fr.read(arr) len是实际读到的长度(int),不是数组的长度! // 当没有新内容可读时,返回值是int -1 while ((len= fr.read(arr)) != -1){ System.out.print(new String(arr,0,len)); // String构造方法直接把字符数组转换为字符串 } fr.close(); } }
说了这么多,其实上面两个都用得不多(滑稽.jpg)
用得比较多是BufferedWriter和BufferReader类。
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
将文本写入字符输出流,缓冲字符,以提供单个字符,数组和字符串的高效写入。
可以指定缓冲区大小,或者可以接受默认大小。 默认值足够大,可用于大多数用途。
常用构造方法:
BufferedWriter(Writer out) 创建使用默认大小的输出缓冲区的缓冲字符输出流。
示例:
BufferedWriter bw = new BufferedWriter(new FileWriter("/home/chichung/桌面/test.txt));
常用方法:
FileWriter的方法都有。
比较特别的是,BufferedWriter类有newLine()方法。
这个方法十分有用。它是写入一个换行符。
windows的换行符是\r\n,linux的换行符是\n,mac的换行符是\r。
newLine()方法可以根据不同的系统,写入合适的换行符!
从字符输入流读取文本,缓冲字符,以提供字符,数组和行的高效读取。
可以指定缓冲区大小,或者可以使用默认大小。 默认值足够大,可用于大多数用途。
常见的构造方法:
BufferedReader(Reader in) 创建使用默认大小的输入缓冲区的缓冲字符输入流。
示例:
BufferedReader br = new BufferedReader(new FileReader("/home/chichung/桌面/test"));
常见的方法:
FileReader的方法都有。
比较特别的是,BufferedReader类有readLine()方法。
readLine()方法是一次读一行。需要注意的是,与read()不同,当没有东西可读的是,readLine()返回的是null,read()返回的是-1。
原文:https://www.cnblogs.com/chichung/p/10196848.html