如何反向打印文件内容?Java文件内容反转读取技术问询
我帮你补全并优化了代码,完美实现读取文件内容并反转输出的功能,同时修正了你代码里的几个小问题:
import java.io.BufferedReader; import java.io.InputStreamReader; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.util.ArrayList; import java.util.Collections; public class FileReverse { public static void main(String[] args) { Path file = Paths.get("C:\\Java\\Sample.txt"); ArrayList<String> words = new ArrayList<>(); // 用try-with-resources自动关流,不用手动处理close,更安全简洁 try (BufferedReader reader = new BufferedReader(new InputStreamReader(Files.newInputStream(file)))) { String line; // 逐行读取文件(如果文件有多行,这段逻辑也能兼容) while ((line = reader.readLine()) != null) { // 按空格分割每行内容成"单词"数组 String[] splitWords = line.split(" "); for (String word : splitWords) { // 可选:如果要和你的示例一样把"file,"变成",file",就用下面这段替换直接add // if (word.length() > 0 && !Character.isLetterOrDigit(word.charAt(word.length() - 1))) { // char punctuation = word.charAt(word.length() - 1); // words.add(punctuation + word.substring(0, word.length() - 1)); // } else { // words.add(word); // } words.add(word); } } // 直接用集合工具类反转元素顺序,省心又高效 Collections.reverse(words); // 把反转后的列表拼接成字符串输出 StringBuilder reversedResult = new StringBuilder(); for (int i = 0; i < words.size(); i++) { reversedResult.append(words.get(i)); if (i != words.size() - 1) { reversedResult.append(" "); } } System.out.println("反转后:" + reversedResult); } catch (Exception e) { e.printStackTrace(); } } }
关键说明:
修复的语法问题:
- 修正了main方法参数的写法:
String[] args(你原来的String [args]不符合Java标准语法规范) - 修正了流方法的参数:把
files改成了定义好的file,这是笔误导致的错误
- 修正了main方法参数的写法:
优化的细节:
用try-with-resources自动管理输入流和BufferedReader,避免了手动关闭流可能引发的资源泄漏问题,代码更简洁可靠。核心逻辑:
- 逐行读取文件内容,按空格分割成单个元素
- 借助
Collections.reverse()快速反转列表顺序,这是Java集合框架提供的便捷工具方法 - 将反转后的元素重新拼接成字符串,保持空格分隔后输出
如果想要完全匹配你示例里file,变成,file的效果,只需要把代码里注释掉的那段逻辑打开即可,它会自动把单词末尾的标点移到前面。
内容的提问来源于stack exchange,提问作者Nikki
相关产品推荐
相关产品推荐

