中国有多少个网站,网站做视频一个月有多少钱收入,成都网站建设 川icp备,无锡网站推广优化公司深入理解Java IO流#xff1a;字符流
引言
在Java中#xff0c;IO#xff08;输入/输出#xff09;操作是程序与外部世界交互的重要方式。
其中#xff0c;File类是进行文件操作的基础#xff0c;而字节流和字符流则是数据传输的两种主要方式。
本文将深入探讨这些概念及…深入理解Java IO流字符流
引言
在Java中IO输入/输出操作是程序与外部世界交互的重要方式。
其中File类是进行文件操作的基础而字节流和字符流则是数据传输的两种主要方式。
本文将深入探讨这些概念及其应用。一、字节流读取中文问题
字节流是万能流,更侧重于文件复制,但是尽量不要边读边看原因 UTF-8一个汉字占3个字节GBK一个中文占2个字节
如果按照字节读取,每次读取的字节没有构成一个汉字的字节数,就直接输出,汉字是显示不了的
解决方法: 将文本文档中的内容,按照字符去操作
二、FileReader 字符输入流
字符流专门去操作文本文档但是复制操作不要用字符流概述 字符输入流 Reader 抽象类 子类FileReader 作用 将文本文档中的内容读取到内存中来 构造 FileReader(File file);FileReader(String path); 方法 int read() 一次读取一个字符,返回的是读取字符对应的int值int read(char[] cbuf) 一次读取一个字符数组,返回的是读取个数int read(char[] cbuf,int off ,int len ) 一次读取一个字符数组一部分,返回的是读取个数 cbuf 读取的数组off 那个开始读len 读多少个 void close() 测试 Testpublic void demo1() throws IOException {FileReader fileReader new FileReader(testfile.txt);int i;while (((i fileReader.read()) ! -1)) {System.out.println((char) i);}fileReader.close();}Testpublic void demo2() throws IOException {FileReader fileReader new FileReader(testfile.txt);int i;char[] chars new char[2];while (((i fileReader.read(chars)) ! -1)) {System.out.println(new String(chars, 0, i));}fileReader.close();}三、FileReader 字符输出流
概述 字符输入流 Writer 抽象类 子类FileWriter 作用 将数据写到文件中 构造 FileWriter (File file);FileWriter (String fileName);FileWriter (String fileName,boolean append); 追加续写 方法 int write()int write(char[] cbuf)int write(char[] cbuf,int off ,int len )int write(String str)void close() 小细节 FileWriter 底层自带一个缓冲区,我们写的数据会先保存到缓冲区中,所以我们需要将缓冲区中的数据刷到文件中flush()将缓冲区中的数据刷到文件中,后续流对象还能继续使用close()先刷新后关闭后续流对象不能使用了 测试 Testpublic void demo3() throws IOException {FileWriter fileWriter new FileWriter(testfile.txt);fileWriter.write(干就完了兄弟们\n);fileWriter.write(奥利给\n);fileWriter.flush();fileWriter.close();}