测试你对Java字符流的掌握程度
正确答案是C。字符流以字符(char)为单位进行读写操作,能够自动处理字符编码转换,特别适合处理文本文件。字符流原生支持Unicode字符,包括中文等多字节字符。
正确答案是B。Reader是所有字符输入流的抽象基类,而Writer是所有字符输出流的抽象基类。InputStream是字节输入流的基类,FileReader和BufferedReader都是Reader的具体实现类。
正确答案是B。BufferedReader通过内置缓冲区减少系统调用次数,显著提高I/O性能。它还提供了readLine()方法,可以方便地按行读取文件内容。
正确答案是B。FileWriter的write()方法会将字符串追加写入到文件中,两次write()调用会依次写入"Hello"和" World",最终文件内容为"Hello World"。try-with-resources会自动关闭流并刷新缓冲区。
正确答案是B。使用InputStreamReader并明确指定UTF-8编码可以确保正确处理中文字符,避免乱码问题。FileReader使用系统默认编码,可能导致乱码。
正确答案是B。PrintWriter的println()方法在输出内容后会自动刷新缓冲区,而print()、printf()和write()方法不会自动刷新,需要手动调用flush()方法。
正确答案是D。整个代码块都有问题,因为创建的流没有被关闭,可能导致资源泄露。应该使用try-with-resources语句或在finally块中手动关闭流。
正确答案是C。BufferedReader的默认缓冲区大小是8192个字符。这个大小可以通过构造函数参数进行自定义,合理的缓冲区大小能显著提高I/O性能。
正确答案是C。使用StandardCharsets.UTF_8常量比直接使用字符串"UTF-8"更安全,可以避免拼写错误,并且在编译时就能发现问题。这是处理字符编码的最佳实践。
正确答案是C。字符流专门用于处理文本文件,能够自动处理字符编码转换,特别适合处理包含中文等多字节字符的文本。对于图片、音频、视频等二进制文件,应该使用字节流。