超级弱者问题

花花呀123456 2008-04-12 11:57:01
 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());



现在问题是:可以将写的英文字符保存,但是用记事本打开文件可以看到每个英文字母前面都有一个空格,然后再将刚才保存得文件用程序打开,可以看到每个英文字母前面的空格变成了小方格;再一个就是不能打开中文文档,否则程序当死。 如果写入中文,那么变成乱码,读出也是乱码。
请教高手。
...全文
101 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
hmsuccess 2008-04-13
  • 打赏
  • 举报
回复
byte[] buffer = MyPanel.textarea.getText().getBytes();
dout.write(buffer ,0,buffer.length);
gjgj3368 2008-04-13
  • 打赏
  • 举报
回复
ding
花花呀123456 2008-04-13
  • 打赏
  • 举报
回复
呵呵,问题解决了,读取代码如下:
 FileName=filechoose.getSelectedFile().getPath();
File file = new File(FileName);
FileInputStream fin=new FileInputStream(file);
DataInputStream din=new DataInputStream(fin);
Total=din.readUTF();
din.close();


谢谢各位的热心帮助。结贴,散分!
花花呀123456 2008-04-13
  • 打赏
  • 举报
回复
为什么不管我是用DataInputStream套上FileInputStream按照字节流来读取,还是用BufferedReader按照字符流来读取,为什么遇到中文就出现问题呢?
花花呀123456 2008-04-13
  • 打赏
  • 举报
回复
现在保存得代码改成如下,可以了,但是读取还是有乱码问题:
 FileName=filechoose.getSelectedFile().getPath();
FileOutputStream fileoutput=new FileOutputStream(FileName);
DataOutputStream dout=new DataOutputStream(fileoutput);
dout.writeUTF(MyPanel.textarea.getText());
dout.close();


请教读取的怎么改呢?
montao 2008-04-13
  • 打赏
  • 举报
回复

是文件编码的问题,你改成GBK或则UTF-8就没事了.你现在的文件是ansi编码的 所以就会那样
  以前遇到过 祝你早日搞定!!!!
老紫竹 2008-04-13
  • 打赏
  • 举报
回复
    FileOutputStream fileoutput = new FileOutputStream(filename);
Writer writer = new OutputStreamWriter(fileoutput, "GBK");


你可以用这个指定你输出文件的编码
fengalon_wang 2008-04-13
  • 打赏
  • 举报
回复
首先输入到数据流的数据是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()。

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧