2016-04-26 7 views
0

Ich möchte Texte aus zwei oder mehr Dateien mit dem Array main methods lesen. Ist es möglich? (mein Code könnte etwas komisch sein, weil ich ein Anfänger bin)Lesen mehrerer Dateien mit BufferedReader (mit String [] args)

Hier ist mein Code.

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

Ist das Kompilieren? Ich kann keinen Konstruktor für FileReader finden, der zwei Dateipfade akzeptiert. Und warum überschreibst du deine Input Params Args? –

Antwort

3

@Lena: ich verstehe nicht, warum beeinflussen Sie Werte zu args [] in der Hauptmethode?

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

Stattdessen können Sie die Dateien Namen in den args pass [], während Sie Ihre Haupt ausführen und testen, ob args []. Länge < 1, args [] verursachen. Länge! = 1 wird immer wahr sein wenn Sie zwei oder mehr Dateien lesen möchten. So wie @ugurdonmez sagt: Sie können ein BufferedReader-Array mit einer gleichen Größe von Argumenten erstellen.

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

Ich habe versucht, einige Argumente zu geben args [0] = "data.txt"; und args [1] = "daten2.txt"; aber es hat nicht so funktioniert, wie ich es mir vorstelle. Ich verstehe, was Sie mit diesem Satz meinen "Sie können die Namen der Dateien in den Argumenten übergeben []". Die Probleme sind, ich weiß nicht, wie ich die Dateinamen in den Argumenten [] übergeben oder ein Argument geben kann. Ich werde schätzen, wenn Sie ein Beispiel geben und dieses Beispiel (s) erklären können @Asma, –

+0

@LenaMonikaMarshall, wenn Sie Ihr Beispiel von der Befehlszeile ausführen, können Sie Argumente der Hauptmethode auf diese Weise übergeben: Java ClassName arg1 arg2 ... argN Wenn Sie zum Beispiel Eclipse verwenden, werfen Sie einen Blick auf dieses Thema: [link] (http://stackoverflow.com/questions/373328/invoking-java-main-method-with-parameters-from-eclipse) – Asma

1

Sie können ein BufferedReader-Array mit einer gleichen Größe von Argumenten erstellen. Dann können Sie sie mit einer Schleife konstruieren.

+0

Ich habe Asma die gleiche Frage gestellt. Ich denke, er ist wenig beschäftigt. Also ich werde es schätzen, wenn Sie meine Frage beantworten. Meine Frage ist; Wie kann ich die Dateinamen in den Argumenten [] übergeben oder Argumenten Argumente geben? @ugurdonmez –

+0

@LenaMonikaMarshall Sie können Namen von der Befehlszeile geben. einfach google java Befehlszeilenargumente. Wenn Sie eine IDE verwenden, suchen Sie mit dem ID-Namen. – ugurdonmez

+0

http://www.cs.colostate.edu/helpdocs/eclipseCommLineArgs.html danke @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(); 
    } 

Sie könnten wollen diesen Ansatz prüfen, wenn das Lesen der Datei Kraftprogramm nicht Zeilen aus der Datei zu lesen. Dies kann manchmal Ausnahmen auslösen.

2

Ich habe Abkürzung für Eclipse gefunden.

1) Klicken Sie auf Run -> Run Configurations 2) Klicken Sie auf die Registerkarte Argumente 3) Geben Sie im Abschnitt Programmargumente Ihre Argumente ein. 4) enter image description here Klicken Sie auf Übernehmen