安卓开发如何将多条数组数据写入本地TXT文件
问题根因
现有代码两个核心问题导致仅能保存1条数据:
- 初始化
FileWriter时默认使用覆盖写入模式,每次执行写入逻辑都会清空文件原有内容再写入新数据 - 仅对单条
rightDataDict执行写入操作,没有遍历完整的待写入数组
修正方案
场景1:一次性写入数组全部数据
如果你是拿到完整数组后统一写入,直接遍历数组所有元素写入即可:
// 请将下面的rightDataList替换为你自己的数组/列表变量,YourDataType替换为数组元素的实际类型 List<YourDataType> rightDataList = 你的待写入数组; File file = new File(Visualization.this.getFilesDir(), "text"); if (!file.exists()) { file.mkdir(); } try { File gpxfile = new File(file, "sample.txt"); FileWriter writer = new FileWriter(gpxfile); // 遍历数组写入所有元素 for (YourDataType item : rightDataList) { writer.append(item.toString()); // 可选:添加换行符分隔多条数据,避免内容粘连 writer.append("\n"); } writer.flush(); writer.close(); } catch (IOException e) { e.printStackTrace(); }
场景2:逐次追加写入新数据
如果你的数据是分批产生的(比如每次生成1条新数据就存一次),给FileWriter开启追加模式即可,不会覆盖之前写入的内容:
File gpxfile = new File(file, "sample.txt"); // 第二个参数传true代表开启追加模式 FileWriter writer = new FileWriter(gpxfile, true); writer.append(rightDataDict.toString()).append("\n"); writer.flush(); writer.close();
优化建议
推荐使用Java 7及以上支持的try-with-resources语法,无需手动关闭流,避免忘记关流导致的资源泄漏:
File file = new File(Visualization.this.getFilesDir(), "text"); if (!file.exists()) { file.mkdir(); } File gpxfile = new File(file, "sample.txt"); // try结束会自动关闭writer try (FileWriter writer = new FileWriter(gpxfile)) { for (YourDataType item : rightDataList) { writer.append(item.toString()).append("\n"); } } catch (IOException e) { e.printStackTrace(); }
内容的提问来源于stack exchange,提问作者P76107077杰凱力艾
相关产品推荐
相关产品推荐

