You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何反向打印文件内容?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,这是笔误导致的错误
  • 优化的细节:
    用try-with-resources自动管理输入流和BufferedReader,避免了手动关闭流可能引发的资源泄漏问题,代码更简洁可靠。

  • 核心逻辑:

    1. 逐行读取文件内容,按空格分割成单个元素
    2. 借助Collections.reverse()快速反转列表顺序,这是Java集合框架提供的便捷工具方法
    3. 将反转后的元素重新拼接成字符串,保持空格分隔后输出

如果想要完全匹配你示例里file,变成,file的效果,只需要把代码里注释掉的那段逻辑打开即可,它会自动把单词末尾的标点移到前面。

内容的提问来源于stack exchange,提问作者Nikki

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:57:10