如何在Java中读取代码文件并保留缩进信息写入新文件?
解决方案
一、修复文件读取逻辑(保留缩进)
你当前的readFile方法使用StringTokenizer和错误的Scanner分隔符设置,会直接破坏缩进和空格信息。要完整保留原文件的缩进格式,核心是按行读取整行内容,而非拆分字符。以下是修正后的实现:
读取文件到列表(保留每行缩进)
import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; import java.util.ArrayList; import java.util.List; private static List<String> readFile(String inputFilename) throws IOException { List<String> lines = new ArrayList<>(); try (BufferedReader reader = new BufferedReader(new FileReader(inputFilename))) { String line; while ((line = reader.readLine()) != null) { // 直接将整行(包括前置缩进、空格)加入列表 lines.add(line); } } return lines; }
将列表内容写入新文件(保留缩进)
import java.io.BufferedWriter; import java.io.FileWriter; import java.io.IOException; import java.util.List; private static void writeFile(List<String> lines, String outputFilename) throws IOException { try (BufferedWriter writer = new BufferedWriter(new FileWriter(outputFilename))) { for (String line : lines) { writer.write(line); writer.newLine(); // 写入换行符,保持原文件行结构 } } }
二、语法高亮工具推荐
Java 相关
- RSyntaxTextArea:Java Swing生态下的开源文本组件,支持多种编程语言语法高亮,可直接集成到桌面应用中,能精准识别缩进并渲染对应格式。
- IntelliJ IDEA内置高亮引擎:如果是在IDE环境下处理代码展示,可通过IntelliJ SDK调用其语法高亮模块,支持对缩进、关键字、注释的精准着色。
Python 相关
- Pygments:Python生态中最常用的语法高亮库,支持数百种语言,可将代码转换为带高亮标记的HTML、LaTeX等格式,能完整保留原代码的缩进结构。
内容的提问来源于stack exchange,提问作者thtkoder
相关产品推荐
相关产品推荐

