2016-03-24 21 views
1

私は数百万のレコードを持つファイルを持っています。ここで私は2000年の最初のレコードを読んで、それを削除してから削除したいと思う。 レコードを読み取ることはできますが、削除方法を教えてください。最初にテキストファイルから1000行を削除します

public class Files { 


    public static void files(int index) throws IOException { 
     try { 

      //numbers num = new numbers(); 
      BufferedReader br = null; 
      BufferedWriter bw = null; 
      try { 

       String sCurrentLine = ""; 
       br = new BufferedReader(new FileReader("data.txt")); 
       bw = new BufferedWriter(new FileWriter("File_2.txt")); 

       int i = 0; 
       while ((sCurrentLine = br.readLine()) != null && i < index) { 
        System.out.println(++i + " " + sCurrentLine); 
        bw.write(sCurrentLine); 
        bw.write(System.getProperty("line.separator")); 
        //sCurrentLine = br.readLine(); 
       } 

      } catch (IOException e) { 
       e.printStackTrace(); 
      } finally { 
       try { 
        br.close(); 
        bw.close(); 
        if (br != null) { 
         br.close(); 
        } 
       } catch (IOException ex) { 
        ex.printStackTrace(); 
       } 
      } 

     } catch (Exception e) { 

     } 
    } 

} 
+0

コードを正しくフォーマットしてください。 – Dakkaron

+1

可能な複製http://stackoverflow.com/questions/1377279/find-a-line-in-a-file-and-remove-it –

+1

とbtwは表示されませんあなたはどこにでもiを増やします。 –

答えて

0

あなたはいくつかのオプションがあります:あなたは、既存のファイルを更新する場合 - 同時に読み取りと書き込みを、あなたはRandomAccessFileストリームが必要になります。これにより、読み書きの両方のためにファイルを開くことができます。一方、元のままで同じファイルを更新するのは危険です。アプリケーションがある時点でクラッシュし、破損したファイルが残ってしまうからです。

もう1つの方法は、新しい一時ファイルを作成し、そのファイルに保存したい部分を書き込むことですが、何百万ものレコードがある場合は効率的でない可能性があります。

関連する問題