BufferedWriter写文件的时候,比原文件数据少,怎么去掉剩余的垃圾数据

sagarcheng 2021-04-08 08:50:38
TXT文件中原数据:
C210113X331
C210113X371己扫码
C210113X450
运行后数据:
C210113X331
C210113X371
C210113X450
0113X450
查看了运行过程,发现是把“己扫码后”写原数据的时候是覆盖的,但是新数据不能完全覆盖原数据,就还剩余了后面那部分数据“0113X450”。
代码如下:
private void again(Uri uri,List<String> list) {
//File file = new File(mFilePath);
if(uri!=null&&list!=null) {
try {
AssetFileDescriptor newassetFileDescriptor = this.getContentResolver().openAssetFileDescriptor(uri, "w");
FileOutputStream outputStream = newassetFileDescriptor.createOutputStream();
OutputStreamWriter outputStreamWriter = new OutputStreamWriter(outputStream);
BufferedWriter bufferedWriter = new BufferedWriter(outputStreamWriter);
for(String s : list) {
if(s!=null) {
bufferedWriter.write(s);
bufferedWriter.newLine();
bufferedWriter.flush();
}
}
bufferedWriter.close();
} catch (Exception e) {
e.printStackTrace();
}
}else {
Toast.makeText(check.this, "文件不存在", Toast.LENGTH_LONG).show();
}
}

要怎么解决呢?
...全文
478 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_39936465 2021-04-20
  • 打赏
  • 举报
回复
引用 4 楼 sagarcheng 的回复:
我原来代码就是这样的呀
我测试了一下 直接用FileOutputStream,是可以覆盖的。可能是你的newassetFileDescriptor.createOutputStream();这里的方法有问题。

            FileOutputStream fos = new FileOutputStream("filepath");
			OutputStreamWriter  osw = new OutputStreamWriter(fos);
			BufferedWriter bw = new BufferedWriter(osw);
qq_39936465 2021-04-20
  • 打赏
  • 举报
回复
引用 楼主 sagarcheng 的回复:
TXT文件中原数据: 要怎么解决呢?
用filewrite试试。
sagarcheng 2021-04-20
  • 打赏
  • 举报
回复
我原来代码就是这样的呀
冰思雨 2021-04-12
  • 打赏
  • 举报
回复
引用 2 楼 sagarcheng 的回复:
不行,有错误。 感谢
使用 OutputStreamWriter 转换一下。 BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(outputStream));
sagarcheng 2021-04-10
  • 打赏
  • 举报
回复
引用 1 楼 冰思雨 的回复:
把 OutputStreamWriter outputStreamWriter = new OutputStreamWriter(outputStream); 这条语句去掉。 BufferedWriter 直接使用 FileOutputStream 对象进行创建。 BufferedWriter bufferedWriter = new BufferedWriter(outputStream);
不行,有错误。 感谢
冰思雨 2021-04-09
  • 打赏
  • 举报
回复
把 OutputStreamWriter outputStreamWriter = new OutputStreamWriter(outputStream); 这条语句去掉。 BufferedWriter 直接使用 FileOutputStream 对象进行创建。 BufferedWriter bufferedWriter = new BufferedWriter(outputStream);
sagarcheng 2021-06-12
  • 举报
回复
@冰思雨 还是不行,可能是安卓版本的问题吧,10以后的都这样

62,634

社区成员

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

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