【问题标题】:Looping input files with the file class使用文件类循环输入文件
【发布时间】:2016-03-06 02:24:21
【问题描述】:

我想弄清楚如何循环文件名。我有 10 个文件 每个文件被称为 Myfile01.txt , Myfile02.txt, Myfile03.txt 一直到 Myfile10.txt

我为第一个文件名做了类似的事情,它在 java 中。

        String bob = new String("C:\\bob\\Myfile01.txt");

        File file = new File(bob);

        Scanner myinput = new Scanner(file);

每个文件包含大约 200 行数据,我将这些数据存储在一个数组中,并使用 .hasnext 来确定哪些数据进入了哪些数组。每个名称用一行分隔。

for (int i=0;i<=200;i++)
    {
        rank[i] = input.next();
        firstname[i] =input.next();
        lastname[i] = input.next();
        dadname[i] = input.next();
        momname[i] = input.next();
    }

现在,当我完成将所有内容存储在文本文件中时,我正在寻找一种方法来使用循环转到下一个 txt 文档以避免笨拙。我可以对其进行硬编码,但这不是很好的风格。

感谢您的任何建议!

【问题讨论】:

    标签: java loops input output


    【解决方案1】:

    循环和String.format 应该可以满足您的需求:

    for (int i = 1; i <= 10; i++) {
        String bob = String.format("C:\\bob\\Myfile%02d.txt", Integer.valueOf(i));
        // ...
    }
    

    格式模式%02d 用零填充一个整数,因为它的长度小于两位数,如syntax for string formatting 中所定义。

    【讨论】:

    • 所以如果我有 MYfile2001.txt 和 myfile2002.txt 就行不通了?
    • 如果您在字符串中的% 之前添加20,它可能会起作用。但是,如果您想更加灵活,则需要调整变量的初始值和条件(可能还有格式模式)以匹配文件名的格式。
    【解决方案2】:

    如果您想浏览子目录,您也可以尝试:

    try {
        Files.walk(Paths.get(directory)).filter(f -> Pattern.matches("myFile\\d{2}\\.txt", f.toFile().getName())).forEach(f -> {
            System.out.println("WHAT YOU WANT TO DO WITH f");
        });
        } catch (IOException e) {
            e.printStackTrace();
    }
    

    【讨论】:

      猜你喜欢
      • 2013-12-12
      • 1970-01-01
      • 2015-03-16
      • 2012-05-10
      • 2016-06-22
      • 1970-01-01
      • 1970-01-01
      • 2015-09-29
      • 2016-10-02
      相关资源
      最近更新 更多