2017-08-16 7 views
0

私のターゲットは、テキストの一部が含まれている1つのtxtファイルがあります。 1つの行に "1"が含まれていれば、次の行は "A"が見つかるまで他のファイルに移動します。条件のtxtファイルに基づいて2つのファイルに分割されたJava

入力ファイルIが出力期待してい

 
A 
rahu 
pahdu 
jhaani 
1 
hjsdh 
dhj 
A 
jiko 
raju 
A 
tenk 
kouou 

を次のように

A.TXTが含まれている

 
rahu 
pahdu 
jhaani 

同じ 1.TXT

私のコード

{ 
    fis = new FileInputStream("E:\\Input.txt"); 
    reader = new BufferedReader(new InputStreamReader(fis)); 

    System.out.println("Reading File line by line using BufferedReader"); 

    String line = reader.readLine(); 
    while(line != null){ 
     if(line.contains("LETTER00~VSAQCCCC~H~")) { 
      line = reader.readLine(); 
      System.out.println(line); 
     } 
     else { 
      line= reader.readLine(); 
     } 
    }   

} 
+0

を見つけるたびあなたは自分のFileOutputStreamを再指定だろうか? –

+0

ただ1行私は条件の後に印刷していますが、 "1"が見つかるまで印刷します –

答えて

0

は、あなたがこのような何かを行うことができ、この

public static void main(String[] args) throws IOException { 
    Scanner scanner = new Scanner(new FileReader("Input.txt")); 
    boolean isFound = false; 
    List<String> main_list = new ArrayList<>(); 
    List<String> sub_list = new ArrayList<>(); 
    while(scanner.hasNextLine()){ 
     String line = scanner.nextLine(); 
     if(line.contains("A")) { 
      isFound = true; 
     } else if(line.contains("1")) { 
      isFound = false; 
      for (String aSub_list : sub_list) { 
       main_list.add(aSub_list); 
      } 
      sub_list.clear(); 
     } 

     if(isFound && !line.contains("A")) { 
      sub_list.add(line); 
     } 
    } 

    for (String aMain_list : main_list) { 
     System.out.println(aMain_list); 
    } 
} 
+0

これで1行だけ印刷されましたが、1まで見つかってしまいます –

+0

@ B.AsiriNaidu私は答えを –

+0

に更新しました。ライン。 "A"の後に1行があると、その行は複数行でスキップされ、完璧に動作します –

0

ような何かを行うことができます。

  System.out.println("Reading File line by line using 
      BufferedReader"); 
      String inputFIle = ""; 
      String line; 
      boolean flag = false; 
      // String line = reader.readLine(); 
      while ((line = reader.readLine()) != null) { 
       if (line.trim().equalsIgnoreCase("A")) { 
        inputFIle = "A.txt"; 
       } else if(line.trim().equalsIgnoreCase("1")){ 
        inputFIle = "1.txt"; 
       } 
       else{ 
        write(line, inputFIle); 
       } 
      } 
0

あなたが直面している問題は何である1またはA.

public static void main(String[] args) throws IOException { 
    FileInputStream fis = new FileInputStream("in.txt"); 
    BufferedReader reader = new BufferedReader(new InputStreamReader(fis)); 

    FileOutputStream fosA = new FileOutputStream("out_A.txt"); 
    FileOutputStream fos1 = new FileOutputStream("out_1.txt"); 
    FileOutputStream fos = null; 

    System.out.println("Reading File line by line using BufferedReader"); 

    String line = reader.readLine(); 
    while (line != null) { 
     System.out.println(line); 
     if(line.equals("A")) 
     { 
      fos = fosA; 
      line = reader.readLine(); 
      continue; 
     } 

     if(line.equals("1")) 
     { 
      fos = fos1; 
      line = reader.readLine(); 
      continue; 
     } 

     fos.write(line.getBytes()); 
     fos.write('\n'); 
     fos.flush(); 
     line = reader.readLine(); 
    } 

    fos.close(); 
    fosA.close(); 
    fos1.close(); 
} 
関連する問題