【问题标题】:Reading multiple files using BufferedReader(with String[] args)使用 BufferedReader(使用 String[] args)读取多个文件
【发布时间】:2016-04-27 04:51:19
【问题描述】:

我想使用 main 方法数组从两个或多个文件中读取文本。可能吗? (我的代码可能有点奇怪,因为我是初学者)

这是我的代码。

public static void main(String[] args) throws IOException {
    if(args.length != 1)
    {
        System.out.println("wrong number of arguments");
        System.exit(1);
    }
     args[0] = "data.txt"; 
     args[1] = "data2.txt"; 

    BufferedReader file = new BufferedReader(new FileReader(args[0],args[1]));
    int NumberofRows =0, NumberofCharacter =0;
    while(true)
    {
        String row = file.readLine();
        if(row == null)
            break;
        NumberofRows++;
        NumberofCharacter = NumberofCharacter + row.length();

    }
    System.out.println("The files "+" data.txt " + " and " "data2.txt "+ "contains "+ NumberofRows+ "rows and  NumberofCharacter  contains"+
    NumberofCharacter  +" character");

    file.close();

【问题讨论】:

  • 这是在编译吗?我找不到接受两个文件路径的 FileReader 的构造函数。以及为什么要覆盖输入参数 args?

标签: java arrays algorithm file bufferedreader


【解决方案1】:

@Lena:我不明白你为什么要在 main 方法中影响 args[] 的值?

args[0] = "data.txt";
args[1] = "data2.txt";

相反,您可以在执行 main 时在 args[] 中传递文件名,并测试 args[].length

    public static void main(String[] args)throws IOException {
                if(args.length <1)
                {
                    System.out.println("wrong number of arguments");
                    System.exit(1);
                }
                for(int i=0; i<args.length; i++)
                {
                   BufferedReader file = new BufferedReader(new FileReader(args[i]));
                   int NumberofRows =0, NumberofCharacter =0;
                   while(row = file.readLine()) !=null)
                   {
                      String row = file.readLine();
                      NumberofRows++;
                      NumberofCharacter = NumberofCharacter + row.length();
                    }
                }
                System.out.println("The files "+" data.txt " + " and " "data2.txt "+ "contains "+ NumberofRows+ "rows and  NumberofCharacter  contains"+
        NumberofCharacter +" character");
               file.close();
            }
    }

【讨论】:

  • 我试图给出一些参数 args[0] = "data.txt";和 args[1] = "data2.txt";但它并没有像我想象的那样工作。我理解您所说的“您可以在 args[] 中传递文件名”的意思。问题是我不知道如何在 args[] 中传递文件名或给出参数。如果您能举一些例子并解释这些例子,我将不胜感激@Asma,
  • @LenaMonikaMarshall 如果您从命令行执行示例,您可以通过这种方式将参数传递给 main 方法: java ClassName arg1 arg2...argN 如果您使用的是 Eclipse,请查看此主题:link
【解决方案2】:
public static void main(String[] args)throws IOException {
    if (args.length != 1) {
        System.out.println("wrong number of arguments");
        System.exit(1);
    }
    args[0] = "data.txt";
    args[1] = "data2.txt";

    for (int i = 0; i < args.length; i++) {

        BufferedReader file = new BufferedReader(new FileReader(args[i]));
        int NumberofRows = 0, NumberofCharacter = 0;
        while (true) {
            String row = file.readLine();
            if (row == null)
                break;
            NumberofRows++;
            NumberofCharacter = NumberofCharacter + row.length();

        }

        file.close();
    }
}

【讨论】:

    【解决方案3】:

    我找到了 eclipse 的快捷方式。

    1) 点击运行 -> 运行配置 2)单击参数选项卡 3)在程序参数部分,输入您的参数。 4)点击申请

    【讨论】:

      【解决方案4】:

      您可以创建一个具有相同大小的 args 的 BufferedReader 数组。然后你可以用循环构造它们。

      【讨论】:

      • 我向 Asma 提出了同样的问题。我觉得他有点忙。因此,如果您能回答我的问题,我将不胜感激。我的问题是;如何在 args[] 中传递文件名或为 args 提供参数? @ugurdonmez
      • @LenaMonikaMarshall 你可以从命令行给出名字。只是谷歌 java 命令行参数。如果您正在使用某个 ide,请使用 ide 名称进行搜索。
      【解决方案5】:
      String row = ""; 
      while(row = file.readLine()) !=null)
          {
              System.out.println(row);
              NumberofRows++;
             NumberofCharacter += row.length();
         }
      

      您可能想在读取文件时考虑这种方法,不要强制程序从文件中读取行。这有时可能会引发异常。

      【讨论】:

        猜你喜欢
        • 2014-03-08
        • 1970-01-01
        • 2017-04-02
        • 2013-04-12
        • 1970-01-01
        • 2017-08-12
        • 1970-01-01
        • 1970-01-01
        • 2018-08-04
        相关资源
        最近更新 更多