約数百万のレコードを含む区切りファイルがあります。さらに処理する前に、区切りファイルから最初の行を削除したいと考えています。
最初の行の長さは可変で、ファイルの種類によって異なります。最初の行を削除する最良の方法として提案されている FileChannel と RandomAccessFile を読み上げました。
しかし、最初の行の長さを取得して削除する方法については、わかりません。
約数百万のレコードを含む区切りファイルがあります。さらに処理する前に、区切りファイルから最初の行を削除したいと考えています。
最初の行の長さは可変で、ファイルの種類によって異なります。最初の行を削除する最良の方法として提案されている FileChannel と RandomAccessFile を読み上げました。
しかし、最初の行の長さを取得して削除する方法については、わかりません。
削除しないでください。ただ読んで無視してください。
ファイル処理ユニットが最初の行が正しくないファイルを処理できないためにファイルを準備する必要がある場合は、ファイルを読み取って書き直す必要があります。ファイルシステム内のファイルからコンテンツを削除できる I/O 操作はありません。
行ごとに読み取るために使用readLine()
し、最初の行をOMMITするだけで、処理で他の行を検討します
入力していただきありがとうございます。同じ に応じて、区切りパイプファイルから最初の行を削除する解決策を見つけました。
以下はコードスニペットです
RandomAccessFile raf = new RandomAccessFile("path to ur delimited file", "rw");
FileChannel fileChannel = raf.getChannel();
raf.readLine();
raf.seek(raf.getFilePointer());
int len = (int) (raf.length() - raf.getFilePointer());
byte[] bytearr = new byte[len];
raf.readFully(bytearr, 0, len);
fileChannel.truncate(0);
raf.write(bytearr,0,len);
BufferedReader
と を使用BufferedReader.readLine()
して、処理前に最初の行を「削除」できます。ここから、残りの行の処理を続行するか、ファイルに保存して後で処理することができます。後者のオプションは、利用できる最も効率的なオプションではない可能性があります。