2016-10-05 7 views
-4

こんにちは私は、いくつかのタグベースのデータを持っているテキストファイルを持っています、そして、私は複数のテキストファイルに分割したいです。このようなデータを持つテキストファイルを複数のテキストファイルに分割したい

メインテキストファイル:

==========110CYL067.txt============ 
<Entity Text>Cornell<Entity Type>Person 
<Entity Text>Donna<Entity Type>Person 
<Entity Text>Sherry<Entity Type>Person 
<Entity Text>Goodwill<Entity Type>Organization 
==========110CYL068.txt============ 
<Entity Text>Goodwill Industries Foundation<Entity Type>Organization 
<Entity Text>Goodwill<Entity Type>Organization 

注:こっち110CYL068.txtと110CYL067.txtはテキストファイルです。

このファイルを110CYL068.txtと110CYL067.txtに分割したいと思います。

この============パターンは============ファイル名============

fixed.Betweenされます

ファイル名は何でもかまいません。誰でも洞察力があります。

+2

あなたの問題は何ですか?これまで何をしていますか? – ArcticLord

+1

答えははいです:私たちは一般的にここでかなりの洞察力を持っています。 :-) –

答えて

1

私はあなたのためにコードを書いたくないので、BufferedReaderまたはFileReaderを使ってファイルを読むことができます。 =======で始まる行、または.txtを含む行が表示されるたびに、ファイルライターを使用して新しいファイルを作成して書き込むことができます。 これらのファイルが見つかった場合は、前のファイルを閉じて処理を繰り返します。

0

完了するとpplの方法が完了し、速く汚れてしまった。また

public static List<String> lines = new ArrayList<String>(); 
public static String pattern = "=========="; 

public static void main(String[] args) throws IOException { 
    addLines(importFile()); 

} 

private static List<String> importFile() throws FileNotFoundException, IOException { 
    BufferedReader br = new BufferedReader(new FileReader("C:\\temp\\test.txt")); 
    try { 
     StringBuilder sb = new StringBuilder(); 
     String line = br.readLine(); 

     while (line != null) { 
      lines.add(line.replaceFirst(pattern, ";") + "\n"); 
      line = br.readLine(); 
     } 

    } finally { 
     br.close(); 
    } 
    return lines; 
} 

private static void addLines(List<String> list) throws IOException { 
    String FilesString = list.toString(); 
    System.out.println(FilesString); 
    String[] FilesArray = FilesString.split(";"); 
    for (String string : FilesArray) { 
     createFile(string); 
    } 
} 

private static void createFile(String content) throws IOException { 

    String[] Lines = content.replaceAll("=", "").split("\n"); 
    File file = new File("C:\\temp\\" + Lines[0]); 
    file.createNewFile(); 
    FileWriter writer = new FileWriter(file); 
    Lines[0] = null; 
    for (String Line : Lines) { 

     if (Line != null) { 
      writer.append(Line.replace(",", "")+"\n"); 

     } 

    } 
    writer.flush(); 
    writer.close(); 
} 

}

0

迅速かつ正規表現を使用して、汚れていません。 forループのmainのループがかなり混乱している可能性があるので、このようにすることをお勧めしませんが、これをアイデアに使用すると有益かもしれません。

import java.io.*; 
import java.util.*; 
class splitFiles { 

    public static void main(String[] args){ 

     try { 
      List<String> fileRead = readFiles("some.txt"); 
      for(int i=0; i<fileRead.size(); i++){ 
       if(fileRead.get(i).charAt(0) == '='){ 
        PrintWriter writer = new PrintWriter(getFileName(fileRead.get(i)), "UTF-8"); 
        for(int j=i+1; j<fileRead.size(); j++){ 
         if(fileRead.get(j).charAt(0) == '='){ 
          break; 
         } else { 
          writer.println(fileRead.get(j)); 
         } 
        } 
        writer.close(); 
       } 
      } 
     } catch (Exception e){ 

     } 

    } 

    public static String getFileName(String fileLine){ 
     String[] split = fileLine.split("="); 
     for(String e: split){ 
      if(e.isEmpty()){ 
       continue; 
      } else { 
       return e; 
      } 
     } 
     return "No file name found"; 
    } 

    public static ArrayList<String> readFile(String path){ 
     try { 
      Scanner s = new Scanner(new File(path)); 
      ArrayList<String> list = new ArrayList<String>(); 
      while(s.hasNext()){ 
       list.add(s.next()); 
      } 
      s.close(); 
      return list; 
     } catch (FileNotFoundException f){ 
      System.out.println("File not found."); 
     } 
     return null; 
    } 

    static List<String> readFiles(String fileName) throws IOException { 
     List<String> words = new ArrayList<String>(); 
     BufferedReader reader = new BufferedReader(new FileReader(fileName)); 
     String line; 
     while ((line = reader.readLine()) != null) { 
      words.add(line); 
     } 
     reader.close(); 
     return words; 
    } 
} 
+0

共有してくれてありがとう私はパターンを使って実装していました。 –

関連する問題