私は、ファイルの最初の行を削除し、Javaのメソッドを記述しようとしていることによってそれ行を反復なしにかかわらず、改行タイプのJavaでファイルの1行目を削除します。は、execを呼び出すか、ライン
最初のアイデア(.execを呼び出すことは良い習慣ではないので拒否)
public void removeHeader(String fileName) throws IOException, InterruptedException {
if (StringUtils.isBlank(fileName)) {
throw new IllegalArgumentException("fileName was empty");
}
Process p = Runtime.getRuntime().exec("sed -i 1d " + fileName);
if (p.waitFor() != 0) {
throw new IOException("Failed to remove the header from " + fileName);
}
}
(すべての行を反復処理し、新しいファイルにそれを書くことが遅いとスタイリッシュではありませんので、CRに拒否)第アイデア。
public void removeHeader(String fileName) throws IOException, InterruptedException {
if (StringUtils.isBlank(fileName)) {
throw new IllegalArgumentException("fileName was empty");
}
File inFile = new File(fileName);
File tempFile = new File(inFile.getAbsolutePath() + ".tmp");
BufferedReader br = null;
PrintWriter pw = null;
try {
br = new BufferedReader(new FileReader(fileName));
pw = new PrintWriter(new FileWriter(tempFile));
String line = null;
boolean first = true;
while ((line = br.readLine()) != null) {
if (!first) {
pw.println(line);
pw.flush();
}
first = false;
}
}
finally {
pw.close();
br.close();
}
if (inFile.exists() && tempFile.exists()) {
inFile.delete();
tempFile.renameTo(inFile);
}
}
私のソリューションは、改行形式に関係なく動作し、読みやすいものにします。これらのニーズをすべて満たすソリューションはありますか?残りのコンテンツを(書き換えることなく、ファイルの先頭からコンテンツを削除する
私の応答はKISS:Keep It Simple、Sillyです。これが本当にアプリケーションのミッションクリティカルな部分でない限り、どちらかの方法で行い、次のことに進みます。すべてが最適化されている必要があると考えると、より大きいプロジェクトを完了するのが遅れて問題を引き起こす可能性があります。 – ControlAltDel
@KenWhiteこれは答えになるはずです。 –
明らかにそうです。 :)完了。 –