FileName=filechoose.getSelectedFile().getPath();//将文件名保存到FileName成员变量中。
                File file = new File(FileName);
                FileReader fi=new FileReader(file);//文件字符流
                BufferedReader fin=new BufferedReader(fi);//字符流缓冲
                fin.toString();
                Temp=fin.readLine();
                
                            
                while(Temp!=null)
                {   
                    Total+=Temp;
                    Temp=fin.readLine();
                }
            [code=Java]    
                MyPanel.textarea.setText(Total);
                panel.revalidate();//面板重绘FileName=filechoose.getSelectedFile().getPath();//将文件名保存到FileName成员变量中。 FileOutputStream fileoutput=new FileOutputStream(FileName); 
String temp=""; 
DataOutputStream dout=new DataOutputStream(fileoutput); 
dout.writeChars(MyPanel.textarea.getText());  
现在问题是:可以将写的英文字符保存,但是用记事本打开文件可以看到每个英文字母前面都有一个空格,然后再将刚才保存得文件用程序打开,可以看到每个英文字母前面的空格变成了小方格;再一个就是不能打开中文文档,否则程序当死。 如果写入中文,那么变成乱码,读出也是乱码。
请教高手。

解决方案 »

  1.   

    byte[] buffer = MyPanel.textarea.getText().getBytes();
    dout.write(buffer ,0,buffer.length);
      

  2.   

    首先输入到数据流的数据是2进制。
    第一个问题:记住输入的空格在记事本中显示出来的就是小方格,没其他原因,如果有,你可以去问编写java的人。
    第二个问题:是关于缓冲区和通道的,你在写入文件的时候仍然用的字符输出:
    "FileOutputStream fileoutput=new FileOutputStream(FileName); 
    String temp=""; 
    DataOutputStream dout=new DataOutputStream(fileoutput); 
    dout.writeChars(MyPanel.textarea.getText());  ”
    ---------------------------------------------------------
    "FileWriter fw = new FileWriter(file);
    BufferedWriter bw = new BufferedWriter(fw);
    String temp = "...";
    bw.write(temp);
    bw.newLine();              
    "
    而且麻烦在数据流结束的时候close()。
      

  3.   

        FileOutputStream fileoutput = new FileOutputStream(filename);
        Writer writer = new OutputStreamWriter(fileoutput, "GBK");你可以用这个指定你输出文件的编码
      

  4.   


      是文件编码的问题,你改成GBK或则UTF-8就没事了.你现在的文件是ansi编码的 所以就会那样
      以前遇到过 祝你早日搞定!!!!
      

  5.   

    现在保存得代码改成如下,可以了,但是读取还是有乱码问题:
                                         FileName=filechoose.getSelectedFile().getPath();
    FileOutputStream fileoutput=new FileOutputStream(FileName);
    DataOutputStream dout=new DataOutputStream(fileoutput);
    dout.writeUTF(MyPanel.textarea.getText());
    dout.close();请教读取的怎么改呢?
      

  6.   

    为什么不管我是用DataInputStream套上FileInputStream按照字节流来读取,还是用BufferedReader按照字符流来读取,为什么遇到中文就出现问题呢?
      

  7.   

    呵呵,问题解决了,读取代码如下:
                                         FileName=filechoose.getSelectedFile().getPath();
    File file = new File(FileName);
    FileInputStream fin=new FileInputStream(file);
    DataInputStream din=new DataInputStream(fin);
    Total=din.readUTF();
    din.close();谢谢各位的热心帮助。结贴,散分!