写在前面
关于字符和字节,例如文本文件,XML这些都是用字符流来读取和写入。而如RAR,EXE文件,图片等非文本,则用字节流来读取和写入。
读取文件
文件读取,用到BufferdReader和FileReader,BufferdReader用于缓存加速,FileReader用于读取文件。
public class BufferInputFile {
public static void main(String[] args) throws IOException {
String file = "F:" + File.separator + "io" + File.separator + "hello.txt";
BufferedReader reader = new BufferedReader(new FileReader(file));
String s;
StringBuilder builder = new StringBuilder();
while((s = reader.readLine()) != null){
builder.append(s);
}
reader.close();
}
}
文件写入
文件写入,用到了PrintWriter,BufferedWriter和FileWriter。PrintWriter提供了print系方法,可以格式化输出,BufferedWriter提供了缓存加速,FileWriter写入文件。
public class TestFileOut {
public static void main(String[] args) throws IOException {
String file = "F:" + File.separator + "io" + File.separator + "hello.txt";
String outFile = "F:" + File.separator + "io" + File.separator + "hello2.txt";
BufferedReader in = new BufferedReader(new FileReader(file));
PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter(outFile)));
String s;
while((s = in.readLine()) != null){
out.println(s);
}
out.close();
in.close();
}
}
上述的文件读取和写入,都是实战中比较恰当的写法。
PrintWriter中的println和write方法的区别
其实翻阅了源码得知,print方法实际也调用了write方法。一般上,使用PrintWriter都是会使用print系的方法。
下面这两个语句的作用相同:
out.write(“hello.txt/n”);
out.println(“hello.txt”);
PrintWriter的readLine()方法是读一个文本行,只有读取到回车或换行符号时,一行文本才读取完成。
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/7814.html