永发信息网

java中谁遇到过这种问题啊,FileWriter存入内容以后,为什么内容里面每行开头只要有空格就会变成问号?

答案:3  悬赏:80  手机版
解决时间 2021-03-28 20:07
  • 提问者网友:趣果有间
  • 2021-03-27 22:40
java中谁遇到过这种问题啊,FileWriter存入内容以后,为什么内容里面每行开头只要有空格就会变成问号?
最佳答案
  • 五星知识达人网友:空山清雨
  • 2021-03-27 23:28
你存入的内容有问题,是从stream里来的?
filewriter是字符流的。应该是你有半个字节的字符吧。
说一下你的流程,数据从哪儿来的。怎么写的。追问File storefile = new File(storeDir + fileName);

FileWriter writer = new FileWriter(storefile);
writer.write(content);
writer.flush();
"content"中内容还是正确的,只要存入磁盘中空格就变成问号了追答content的空格是正确的?
你怎么能这么形容呢?里面的空格是半角的还是全角的。是中文状态下的空格?
如果是英文的空格就会出这个问题啊。追问是啊,就是英文会出现这种问题,不知道该怎么转追答那就不用fileWriter啊,用stream啊,或者将content中的英文空格替换为中文空格。追问就是不知道怎么把英文空格转为中文空格呀追答。。。。。。那替换成2个空格英文字符会吧。
content.replaceAll(" "," ");追问不行啊 ,还是那种情况啊追答那你用stream吧。这个就应该没问题了。追问OutputStream storefile = new FileOutputStream(storeDir + fileName);
OutputStreamWriter writer=new OutputStreamWriter(storefile);

writer.write(content);

还是一样的啊追答让你用stream,你这还是用writer啊。
String content="我爱你zhongguo ni ds aa 啊 什么啊";
FileOutputStream storefile;
try {
storefile = new FileOutputStream(new File("E:/test11.txt"));
storefile.write(content.getBytes());
storefile.flush();
storefile.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
这样你能理解吗?如果content的内容很大,可以分多次写。追问重新按照你的这个写了,可是存入磁盘的内容,每行开头只有有空格的还是会变成问号啊追答你贴一下代码,我运行一下试试看。
给出你的那个字符串。追问很感谢你,问题已经解决了,用了两次转码才搞定追答我怀疑是编码的问题,但是没敢说。
全部回答
  • 1楼网友:痴妹与他
  • 2021-03-28 01:16
不会是你本地的字符集有问题吧。
  • 2楼网友:底特律间谍
  • 2021-03-28 00:30
编码问题,去百度搜答案慢慢解决
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯