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哪里没反应?读不进文本里?求讲解

解决方案 »

  1.   

    DefaultEditorKit kit = new DefaultEditorKit();
    kit.read(isr, JText.getDocument(), 0);
      

  2.   

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

  3.   


    我的FIS不是只创建一次对象?哪里再创建另外的流对象了吧大神,求指教
      

  4.   


    放在else哪里?不是很看得明,,不过还是要感谢
      

  5.   


    我的FIS不是只创建一次对象?哪里再创建另外的流对象了吧大神,求指教 else{//打开ANSI编码txt文件,没反应,没写进文本里,是什么问题?
                            InputStreamReader isr=new InputStreamReader(FIS);
                            BufferedReader bf=new BufferedReader(isr);
                            String St=null;FIS在前面已经读了三个字节了....
      

  6.   


    我的FIS不是只创建一次对象?哪里再创建另外的流对象了吧大神,求指教 else{//打开ANSI编码txt文件,没反应,没写进文本里,是什么问题?
                            InputStreamReader isr=new InputStreamReader(FIS);
                            BufferedReader bf=new BufferedReader(isr);
                            String St=null;FIS在前面已经读了三个字节了....我好像听明白了,感谢大神,,那是不是我在前面close()或者建多一个Fileinputstream就可以用了?