字节打印流
-
概述
字节打印流:PrintStream,只输出数据,有特有的print() / println()方法 -
构造方法
构造方法 描述 PrintStream(String fileName) 使用指定的文件路径创建没有自动行刷新的新打印流。 PrintStream(OutputStream out, boolean autoFlush) 创建带有刷新功能的打印流 public class Demo { public static void main(String[] args) throws IOException { PrintStream ps = new PrintStream("e:\\360sd\\1.txt"); //使用OutputStream方法写入的是字节数据 ps.write(98); //使用打印流特有方法写入的是默认码表对应的字节数据 ps.println('c'); } } ---*--- 输出结果: 打开1.txt文件显示:bc
输出结果可以看出,使用PrintStream父类的write方法写入的是字节数据 98,打开1.txt查看会根据默认编码表转换字节数据为对应字符。而使用printStream特有方法print/println方法写入的是 ‘c’,字符对应默认码表的字节数据,写入的是字节数据 99。
字符打印流
-
概述
字符打印流:PinrtWriter,只输出数据,有特有的print() / println()方法 -
构造方法
构造方法 描述 PrintWriter(String fileName) 使用指定的路径文件创建一个新的PrintWriter,而且不需要执行自动刷新 PrintWriter(Writer out, boolean autoFlush) 创建一个新的PrintWriter,当autoFlush为true,则print、println、和format方法将属性输出缓冲区 public class Demo { public static void main(String[] args) throws IOException { PrintWriter pw = new PrintWriter("e:\\360sd\\1.txt"); //使用字符输出流的write方法 pw.write("你好"); pw.write("\r\n"); pw.write("中国"); //使用字符打印流特有方法 pw.println("你好"); pw.print("中国"); //字符输出流均需要刷新缓冲区 pw.flush(); } } ---*--- 输出结果: 在1.txt文件中写入了: 你好 中国你好 中国
字符输出流需要刷新缓冲区才能将数据写入文件
public class Demo { public static void main(String[] args) throws IOException { PrintWriter pw = new PrintWriter(new FileWriter("e:\\360sd\\1.txt"),true); //使用字符打印流特有方法 pw.println("你好"); //自动刷新缓冲区 pw.print("中国"); //没有自动刷新 } } ---*--- 输出结果: 在1.txt文件中写入了: 你好
使用该构造方法在调用println方法打印字符时会自动刷新缓冲区。
-
复制文件对比
public class HelloWorld {
public static void main(String[] args) throws IOException {
//使用字符输入流 + 字符打印流
BufferedReader br =
new BufferedReader(new FileReader("idea_test\\src\\com\\file\\testFile.java"));
PrintWriter pw = new PrintWriter(new FileWriter("copy.java"),true);
String len ;
while ((len=br.readLine())!=null){
pw.println(len);
}
//关闭流
br.close();
pw.close();
// //使用字符输入输出流
// BufferedReader br =
// new BufferedReader(new FileReader("idea_test\\src\\com\\file\\testFile.java"));
// BufferedWriter bw = new BufferedWriter(new FileWriter("copy1.java"));
// String len;
// while ((len=br.readLine())!=null){
// bw.write(len);
// bw.newLine();
// bw.flush();
// }
// //关闭流
// br.close();
// bw.close();
}
}
---*---
输出结果: