向同一文件追加数据时遇报错,附代码求技术解决方案
问题排查与解决方案
从你给出的代码片段来看,无法向文件追加数据的核心原因是FileWriter默认使用覆盖模式,而非追加模式!
问题根源
你当前初始化BufferedWriter的代码是:
BufferedWriter bw = new BufferedWriter(new FileWriter("C:\\dataoutput.txt"))
FileWriter的无参构造方法会直接清空目标文件并从头写入,如果你想在现有文件末尾追加内容,必须传入第二个布尔参数并设为true,以此开启追加模式。
修正后的完整代码
我帮你补全了代码逻辑(假设URLShortener类有shorten()方法处理每行链接),同时修复了追加问题:
public static void main(String args[]) throws IOException { URLShortener u = new URLShortener(100, "https://is.gd/"); // 开启FileWriter的追加模式:第二个参数设为true try (BufferedReader br = new BufferedReader( new InputStreamReader(new FileInputStream(new File("C:\\data.txt")))); BufferedWriter bw = new BufferedWriter(new FileWriter("C:\\dataoutput.txt", true))) { String line; while ((line = br.readLine()) != null) { // 调用URLShortener的方法生成短链接 String shortenedUrl = u.shorten(line); // 写入短链接并换行,保证每条数据独立一行 bw.write(shortenedUrl); bw.newLine(); // 可选:手动刷新缓冲区,避免大量数据滞留内存 bw.flush(); } } }
额外避坑提示
- 权限问题:Windows系统下C盘根目录可能存在读写权限限制,建议把文件路径换成用户目录(比如
"C:\\Users\\你的用户名\\dataoutput.txt"),避免因权限不足抛出异常 - 异常细化:直接抛出
IOException不利于定位具体问题,建议捕获FileNotFoundException(文件不存在)、SecurityException(权限不足)等细分异常,方便快速排查 - 资源管理:你用try-with-resources的写法非常好,它会自动关闭流并刷新缓冲区,避免资源泄漏问题
内容的提问来源于stack exchange,提问作者user1911509
相关产品推荐
相关产品推荐

