在InputStream中处理时:
//3、操作(读取) int temp; while((temp=is.read ) )!=-1 ) system.out.println((char ) temp ); (} (char ) temp遇到中文字符时,字节数可能不够,因此可能无法旋转。 英语文字没有任何问题。
FileReader很容易处理,内部不需要管理它。 这样的话,很少会发生乱码问题,其内部已经处理完毕。
FileInputStream可以处理字节数组,FileReader可以处理字符数组。 所谓字符数组,也就是字符串。
Reader抽象类的API文档:
Writer抽象类的API文档:
Writer抽象类具有append方法,可以直接传播. append ().append ().append (.append ) )。 这与StringBuilder和StringBuffer尚学堂16 )相似。 (链接: Java StringBuilder和StringBuffer尚学堂116那是流动模式。
流模式:不是IO流的流。 流. append ().append ().append ().append () ) ) )可以一直单击并始终返回的是this对象。
import java.io.File; import java.io.FileInputStream; import Java.io.file not found exception; import java.io.FileOutputStream; import java.io.FileReader; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.io.Reader; public class test { publicstaticvoidmain (字符串[ ] args ) )//1,创建方filesrc=newfile('ABC.txt ' ); //2,选择流reader reader=空; try{reader=newfilereader(src; //3、char[] flush=new char[1024]; //缓冲罐int len=-1; //接收信长while((len=reader.read ) flush ) )!=-1 )//字符数组---字符串stringstr=newstring(flush,0,len ); system.out.println(str; }catch(filenotfoundexceptione ) {e.printStackTrace ); }catch(ioexceptione ) {e.printStackTrace ); }finally {//4、释放资源并分别关闭先打开的{/} try { if (null!=reader(reader.close ); }catch(ioexceptione ) {e.printStackTrace ); } }输出结果:
I am going to study java。
这一行是中文字符。
可以看出即使文件中有中文字符也能正确输出。
由于FileReader操作字符数组,因此缓冲区容器的数据类型为char[]
它已经是字符数组,不存在解码,作为字符数组的字符串,直接字符数组作为字符串构建。
更改为一个字符一个字符地阅读没有乱码问题:
char[] flush=new char[1]; //缓冲罐输出结果:
I
a
米
g
o
I
n
g
t
o
s
t
欧陆
d
y
Jj
a
v
a
水平。
这是
一
去
是
的双曲正弦值
句子
字
车票。
import java.io.File; import Java.io.file not found exception; import java.io.FileWriter; import java.io.IOException; import java.io.Writer; public class test { publicstaticvoidmain (字符串[ ] args ) )//1,创建方filesrc=newfile('ABC.txt ' ); //2、选择流写入器写入器=null; try{writer=newfilewriter(src; //3、String msg='IO is so easy操作(导出! 尚学堂; char[] datas=msg.toCharArray (; //字符串--字符数组writer.write(datas,0,datas.length ); writer.flush (; }catch(filenotfoundexceptione ) {e.printStackTrace ); }catch(ioexceptione ) {e.printStackTrace ); }finally {//4、释放资源并分别关闭先打开的{/} try { if (null!=writer(writer.close ); }catch(ioexceptione ) {e.printStackTrace ); } }运行后:
写法2 :
import java.io.File; import Java.io.file not found exception; import java.io.FileWriter; import java.io.IOException; import java.io.Writer; public class test { publicstaticvoidmain (字符串[ ] args ) )//1,创建方filesrc=newfile('ABC.txt ' ); //2、选择流写入器写入器=null; try{writer=newfilewriter(src; //3、String msg='IO is so easy操作(导出! 尚学堂; writer.write(msg; writer.flush (; }catch(filenotfoundexceptione ) {e.printStackTrace ); }catch(ioexceptione ) {e.printStackTrace ); }finally {//4、释放资源并分别关闭先打开的{/} try { if (null!=writer(writer.close ); }catch(ioexceptione ) {e.printStackTrace ); } }写法3 :
import java.io.File; import Java.io.file not found exception; import java.io.FileWriter; import java.io.IOException; import java.io.Writer; public class test { publicstaticvoidmain (字符串[ ] args ) )//1,创建方filesrc=newfile('ABC.txt ' ); //2、选择流写入器写入器=null; try{writer=newfilewriter(src; //3、writer.append(ioissoeasy! '.append (尚学堂); writer.flush (; }catch(filenotfoundexceptione ) {e.printStackTrace ); }catch(ioexceptione ) {e.printStackTrace ); }finally {//4、释放资源并分别关闭先打开的{/} try { if (null!=writer(writer.close ); }catch(ioexceptione ) {e.printStackTrace ); } }请注意,这只能处理文字文件,不能处理图像等。