2017-03-07 1 views
1

files.listfiles()files.list()はあまり保存できないため、Javaのディレクトリからファイルを読み込めるようにしたい。また、ディレクトリにファイルのオフセットを格納する方法があるかどうかを知りたいので、その番号を保存して、ディレクトリを再度検索して見つける必要はありません。これは可能ですか?Javaのディレクトリにあるファイルを読み込んでそのオフセットをディレクトリに保存する

今私は別の質問からのJaime Hablutzelの答えを使用してディレクトリを調べていますが、ファイルオフセットをディレクトリに保存して次回に直接移動できるかどうか疑問に思っています。

ファイル名をテキストファイルに保存し、新しい行が見つかるまで別のファイル名を記録するようにカウントを保存し、RandomAccessFile seek()メソッドを使用してその行にディレクトリを移動しました。保存されたカウント。

How to list 2 million files in a directory in java

答えて

1

わかりました、私は私がやりたいことに私の問題を解決しました。私はテキストファイルに保存された各ファイルに対して、各ファイル名の長さ+ 1をとり、それをオフセットに加えてファイルに書き込むことによってオフセットを作成しました。

public static void readOffsets() 
{ 
    try { 
     File file = new File("indexFile.txt"); 
     FileReader fr = new FileReader(file); 
     BufferedReader br = new BufferedReader(fr); 

     FileWriter fw = new FileWriter("indexFile2.txt"); 
     PrintWriter pw = new PrintWriter(fw); 

     String line; 
     int offset = 0; 
     pw.write(offset + "\n"); 
     while((line = br.readLine()) != null) 
     { 
      int length = line.length(); 
      offset += length + 1; 
      pw.write(offset + "\n"); 

     } 
     pw.close(); 
     br.close(); 
    } 
    catch(IOException ioe) 
    { 
     ioe.printStackTrace(); 
    } 
} 

次に、randomaccessfileを使用してオフセットを検索すると、正しいファイル名が得られます。

public static void seekOffset() 
{ 
    try { 
     RandomAccessFile file = new RandomAccessFile("IndexFile.txt", "r"); 
     file.seek(693); 
     System.out.println(file.readLine()); 
    } 
    catch(IOException ioe) 
     { 

     } 
} 
関連する問題