日期:2014-05-20  浏览次数:20873 次

txt编码,io读取
JFileChooser JFC=new JFileChooser();
int result=JFC.showOpenDialog(this);
if(result==JFileChooser.CANCEL_OPTION){
return;
}
else{
File file=JFC.getSelectedFile();
try{
FileInputStream FIS=new FileInputStream(file);
byte[] bt=new byte[3];
FIS.read(bt, 0, bt.length);
if(bt[0]==(byte)0xff&&bt[1]==(byte)0xfe){//能正确输出unicode
System.out.println("unicode");
}
else if(bt[0]==(byte)0xfe&&bt[1]==(byte)0xff){//能写入记事本,虽然乱码
InputStreamReader isr=new InputStreamReader(FIS);
BufferedReader bf=new BufferedReader(isr);
String St=null;
while((St=bf.readLine())!=null){
JText.append(St);
}
FIS.close();
}
else if(bt[0]==(byte)0xef&&bt[1]==(byte)0xbb&&bt[2]==(byte)0xbf){
System.out.println("utf-8");
}
else{//打开ANSI编码txt文件,没反应,没写进文本里,是什么问题?
InputStreamReader isr=new InputStreamReader(FIS);
BufferedReader bf=new BufferedReader(isr);
String St=null;
while((St=bf.readLine())!=null){
JText.append(St);
}
FIS.close();
}
}
catch(IOException e1){
System.out.println("ffgwegwegewg");
}
}



问题在注释,为什么最后一个else哪里没反应?读不进文本里?求讲解

------解决方案--------------------
DefaultEditorKit kit = new DefaultEditorKit();
kit.read(isr, JText.getDocument(), 0);

------解决方案--------------------
那个FIS的流已经开始读了,就不能拿来再创建另外的流对象了吧