Java基础——IO流(9)

Java基础——IO流(9)

首页模拟经营程序员进阶之路手游更新时间:2024-06-03
1 基本概括

2 主要介绍

2.1 PrintStream和PrintWriter区别

1 PrintStream主要操作byte流,而PrintWriter用来操作字符流。读取文本文件时一般用后者。 2 java的一个字符(char)是16bit的,一个byte是8bit的

3 PrintStream的可能会出现字符集乱码吧。PrintStream是用来操作byte,

PrintWriter是用来操作Unicode, 一般 需要处理中文时用PrintWriter好了

4 PrintStream是一种能接收各种数据类型的输出,打印数据时比较方便:

-System.out是标准输出;-System.err是标准错误输出。

PrintWriter是基于Writer的输出。

2.2 PrintStream和PrintWriter 需要了解的点

这两者在往文件中写入字符串时,最终都需要通过字符集的映射关系得到对应字节。

但这二者在通过char得到对应若干字节的时机不一样,以new PrintStream( new BufferedOutputStream( new FileOutputStream("BasicFileOutput.out")));和new PrintWriter( new BufferedWriter( new FileWriter("BasicFileOutput.out")))为例,前者在存字符串时,从PrintStream传到BufferedOutputStream时就已经是字节了;后者在存字符串时,直到FileWriter真正写入文件时,才将字符转换为字节。

如果PrintStream被设置为autoFlush,那么这些情况flush方法将会自动执行:写入字节数组、任何重载版本的println被调用、一个换行符(char)被写入、一个换行符的字节存储(\n)被写入。

如果PrintWriter被设置为autoFlush,那么这些情况flush方法将会自动执行:println、printf、format方法被调用。

它们都不会抛出IO异常,因为它们在方法内部捕获住了,可以通过checkError()来判断是否发生异常。

PrintWriter会使用平台特有的换行符(比如Windows和linux),PrintStream则固定使用\n。

总的来说,Reader/Writer相比InputStream/OutputStream算是一种升级,将当初设计得不好的地方进行了优化。

3 简单用例

3.1使用PrintStream进行打印到文件的操作

@Test public void IOTest1() throws Exception{ PrintStream ps = new PrintStream(new FileOutputStream("D:\\\\testofprint.txt")); ps.print("我是打印流测试(PrintStream)"); ps.close(); }

3.2使用PrintWriter进行打印到文件的操作

@Test public void IOTest2() throws Exception{ PrintWriter pw = new PrintWriter(new FileWriter("D:\\testofprint.txt")); pw.write("我是打印流测试(PrintWriter)"); pw.close(); }

3.3使用打印流进行重定向的操作,从文件读取内容到程序

@Test public void IOTest3() throws Exception{ System.setIn(new FileInputStream("D:\\testofprint.txt")); Scanner input = new Scanner(System.in); String next = input.next(); System.out.println(next); input.close(); }

3.4使用打印流进行重定向的操作,从程序到文件

//使用打印流进行重定向操作,从程序将内容打印到文件 @Test public void IOTest4() throws Exception{ System.setOut(new PrintStream("D:\\testofprint.txt")); System.out.println("我是打印流重定向操作"); }

查看全文
大家还看了
也许喜欢
更多游戏

Copyright © 2024 妖气游戏网 www.17u1u.com All Rights Reserved