2016-04-26 72 views
0

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

这是我的代码。

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(); 
+0

是编译?我无法找到接受两个文件路径的FileReader构造函数。为什么你会覆盖你的输入参数参数? –

回答

3

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

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

相反,你可以在ARGS []传递文件的名称,而你执行你的主,和测试,如果ARGS []。长< 1,导致ARGS []长度!= 1总是为真如果你想读两个或更多文件。正如@ugurdonmez所说:您可以创建一个具有相同大小参数的BufferedReader数组。

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(); 
      } 
    } 
+0

我试过给一些参数args [0] =“data.txt”;和args [1] =“data2.txt”;但它并没有像我想象的那样工作。我明白你的意思是“你可以在args []中传递文件的名字”。问题是我不知道如何传递args []中的文件名或给出参数。我会很感激,如果你可以举一些例子并解释这个例子@Asma, –

+0

@LenaMonikaMarshall如果你从命令行执行你的例子,你可以通过这种方式将参数传递给main方法:java ClassName arg1 arg2 ... argN 如果您使用Eclipse例如,看看这个话题:[链接](http://stackoverflow.com/questions/373328/invoking-java-main-method-with-parameters-from-eclipse) – Asma

1

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

+0

我向Asma问过同样的问题。我认为他很忙。所以如果你回答我的问题,我会很感激。我的问题是;我如何传递args []中的文件名或给args一个参数? @ugurdonmez –

+0

@LenaMonikaMarshall你可以从命令行给出名字。只是谷歌Java命令行参数。如果您使用的是ide,请使用ide名称进行搜索。 – ugurdonmez

+0

http://www.cs.colostate.edu/helpdocs/eclipseCommLineArgs.html谢谢@ugurdonmez –

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(); 
    } 
} 
0
String row = ""; 
while(row = file.readLine()) !=null) 
    { 
     System.out.println(row); 
     NumberofRows++; 
     NumberofCharacter += row.length(); 
    } 

你可能想读取文件不武力程序从文件读取线时考虑这种做法。这有时会引发异常。

2

我找到了eclipse的快捷方式。

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