Java实现在txt文件含「Link:」的指定行追加链接 现有代码不生效
问题分析
你现有代码的核心问题是完全没有实现「定位包含Link:的行并追加内容」的逻辑,当前代码的实际行为是:
- 把原文件第一行替换为变量
line的值 - 把原文件剩余内容原样拼接在后面
- 最终在整个文件末尾追加
lessonPath的内容,完全不符合需求
其他可优化问题: - 直接拼接字符串效率低,大文件下会有性能问题
- 未指定字符编码,读写时可能出现乱码
- 没有做流的异常处理,IO异常时可能出现资源泄漏
修复后实现代码
if(file.getName().equals(filename + ".txt")) { // 要追加的链接内容 String lessonPath = link; StringBuilder contentBuilder = new StringBuilder(); // 用try-with-resources自动关流,不用手动写close try (BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(file), "UTF-8"))) { String lineE; while ((lineE = br.readLine()) != null) { // 找到包含Link:的行,在后面拼接链接 if (lineE.contains("Link:")) { lineE = lineE + " " + lessonPath; } contentBuilder.append(lineE).append("\n"); } } catch (IOException e) { e.printStackTrace(); // 这里可以加你的异常处理逻辑 return; } // 把处理后的内容写回文件 try (BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file), "UTF-8"))) { bw.write(contentBuilder.toString()); bw.flush(); } catch (IOException e) { e.printStackTrace(); } }
注意事项
- 如果需要严格匹配
Link:开头的行,可以把lineE.contains("Link:")改成lineE.startsWith("Link:") - 如果你的文件用的不是UTF-8编码,把代码里的编码字符串改成对应编码即可
- 代码用了try-with-resources语法,JDK 7及以上版本都支持,会自动关闭流资源,不需要手动调用close方法
内容的提问来源于stack exchange,提问作者Cokenzi
相关产品推荐
相关产品推荐

