标准输入流和标准输出流
System.in
- 编译类型:
InputStream
- 运行类型:
BufferedInputStream
- 编译类型:
System.out
- 编译类型:
PrintStream
- 运行类型:
PrintStream
- 编译类型:
转换流
-
BufferedReader
和BufferedWriter
- BufferedReader读取文件,读取文件是按照UTF-8进行读取的
String filePath = "d:\\a.txt"; BufferedReader br = new BufferedReader(new FileReader(filePath)); String s = br.readLine(); System.out.println(s); br.close();
- 转换流可以将指定方式的字节流转换为字符流。
-
InputStreamReader: Reader的子类,可以将InputStream(字节流)转换为Reader。
-
OutputStreamWriter: Writer的子类,实现将OutputStream转换为Writer。
-
当处理纯文本数据时,使用字符流效率更高,并且可以有效解决中文问题,所以建议将字节流转换为字符流。
-
可以使用指定编码格式(UTF-8 GBK …)
-
通过转换流可以实现自定义编码,从而解决乱码问题
String path = "d:\\a.txt"; //先创建转换流,并且在创建的时候直接定义编码格式 InputStreamReader is = new InputStreamReader(new FileInputStream(path),"gbk"); //缓冲流接收转换流 BufferedReader br = new BufferedReader(is); String s = br.readLine(); System.out.println(s); br.close();
打印流
-
打印流只有输出,没有输入。
-
printStream
printWriter
-
可以通过
setOut()
方法来修改输出位置。PrintStream out = System.out; //默认情况下,输出数据的位置是显示器 out.print("hello"); out.write("dasa".getBytes());//相当于print的底册代码 //修改打印流输出的位置 通过 System.setOut(new PrintStream("d:\\bbb.txt")); System.out.println("hello,高世龙"); out.close();
PrintWriter writer = new PrintWriter(System.out); PrintWriter printWriter = new PrintWriter(new FileWriter("d:\\ccc.txt")); printWriter.println("高世龙"); writer.println("你好"); writer.close(); printWriter.close();