2015-06-29 4 views
0

У меня есть один текстовый файл, как показано ниже. Мой вопрос, я хочу, чтобы прочитать мой текстовый файл Шифрование до каждого одного абзаца и порождающий отдельный новый текстовый файл для каждого из них на JavaКак прочитать один файл и создать несколько текстовых файлов

>T0646 OR188, , 93 residues 
MQEERKKLLEKLEKILDEVTDGAPDEARERIEKLAKDVKDELEEGDAKNMIEKFRDEMEQ 
MYKDAPNAVMEQLLEEIEKLLKKAGSLVPRGSY 


>T0647 HR5514A, , 157 residues 
MTERLSAEQIKEYKGVFEMFDEEGNGEVKTGELEWLMSLLGINPTKSELASMAKDVDRDN 
KGFFFNCDGFLALMGVYHEKAQNQESELRAAFRVFDKEGKGYIDWNTLKYVLMNAGEPLN 
EVEAEQMMKEADKDGDRTIDYEEFVAMMTGESFKLIQ 


>T0648 CpN10, , 102 residues 
MAGQAFRKFLPLFDRVLVERSAAETVTKGGIMLPEKSQGKVLQATVVAVGSGSKGKGGEI 
QPVSVKVGDKVLLPEYGGTKVVLDDKDYFLFRDGDILGKYVD 

public class Test{ 

    public static void main (String[] args){   
     BufferedReader br=null; 
     BufferedWriter bw= null; 

     File file = new File("...Desktop\\New folder\\out.txt"); 
     try { 
      String s; 
      String text = ""; 
      br = new BufferedReader(new FileReader(
        "....Desktop\\New folder\\casp10.txt")); 
      FileWriter fw = new FileWriter(file.getAbsoluteFile()); 
      bw = new BufferedWriter(fw); 
      while ((s=br.readLine())!= null) { 
       if(s.contains(">")){ 
        String line=br.readLine(); 
        if(line!=null) { 
         System.out.println(line); 
         bw.write('\n'+ line); 
        } 
       } 
       bw.write(s +"\n"); 
      } 
     } catch(IOException e) { 
      e.printStackTrace(); 
     } finally { 
      try { 
       if(br!=null) { 
        br.close(); 
        bw.close(); 
       } 
      } catch(IOException e) { 
       e.printStackTrace(); 
      } 
     } 
    } 
} 
+1

В чем проблема? Создайте новый писатель, указывающий на другой файл, когда вы достигнете границы. –

+0

вы пишете> (в переменной s) после записи следующей строки, так что вы переупорядочиваете вывод по сравнению с входом. –

+0

Итак, какие изменения я должен был сделать в этом – Unknown

ответ

0

вызывающую это каждый раз, когда вы хотите напечатать с другим писателем

public class MySaver{ 
    private PrintWriter innerWriter; 
    public MySaver(Writer writer) 
    { 
    this.innerWriter = new PrintWriter(writer); 
    } 

    public void save(String c) throws IOException { 
     innerWriter.write(c); 
    } 

} 

Или сначала создать строку с StringBuilder и присоединять бы вы хотели, а затем расходным т его. String Builder Doc

0

Логика заключается в создании нового объекта FileWriter в вашем цикле while, каждый раз, когда вы видите символ '>'. Я использую простой счетчик файлов, чтобы указать несколько выходных файлов.

out0.txt, out1.txt, вне2.txt и т. Д.

см ниже рабочего кода:

import java.io.BufferedReader; 
import java.io.BufferedWriter; 
import java.io.FileReader; 
import java.io.FileWriter; 
import java.io.IOException; 

public class FileWriting{ 

    public static void main (String[] args){   
     BufferedReader br=null; 
     BufferedWriter bw= null; 

     String outFileName = "D:\\New folder\\out"; 
     try { 
      String s; 
      br = new BufferedReader(new FileReader("D:\\New folder\\casp10.txt")); 
      int fileCounter = 0; 

      while ((s=br.readLine())!= null) { 
       if(s.contains(">")){ 
        if(bw != null){ 
         bw.close(); 
        } 
        FileWriter fw = new FileWriter(outFileName + (fileCounter++) + ".txt"); 
        bw = new BufferedWriter(fw); 
       } 
       bw.write(s +"\n"); 
      } 
     } catch(IOException e) { 
      e.printStackTrace(); 
     } finally { 
      try { 
       if(br!=null) { 
        br.close(); 
        bw.close(); 
       } 
      } catch(IOException e) { 
       e.printStackTrace(); 
      } 
     } 
    } 
} 
+0

Спасибо, я получил свой точный результат. Я действительно ценю ваши усилия – Unknown

+0

, тогда пометить это решение как принято :) –

Смежные вопросы