ファイルの最初の行を削除するメソッドを Java で作成しようとしています。
最初のアイデア (.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);
}
}
2番目のアイデア(すべての行を繰り返して新しいファイルに書き込むのは遅く、スタイリッシュではないため、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);
}
}
改行形式に関係なくソリューションを機能させ、読みやすくしたいと考えています。これらすべてのニーズを満たすソリューションはありますか?