我创建了一个简单的方法来将文本追加到文件中:
void writeFile(String fileName, String... values) {
File file = new File(fileName);
file.getParentFile().mkdirs();
try(BufferedWriter bw = new BufferedWriter(new FileWriter(file, true))) {
for (String value: values) {
bw.write(value);
bw.newLine();
}
} catch (IOException e) {
e.printStackTrace();
}
}
Run Code Online (Sandbox Code Playgroud)
但是,我在编写文件之前如何检查文件末尾是否存在新行以确保正确存储时,我感到很遗憾.
此外,在处理较大的文件时,它必须是可扩展的.
感谢SMA链接到快速阅读文本文件的最后一行?,我能够创建一个方法来检查是否存在新行,然后创建一个新行,如果不存在的话.
void writeFile(String fileName, String... values) {
File file = new File(fileName);
file.getParentFile().mkdirs();
boolean fileExists = file.exists();
try (BufferedWriter bw = new BufferedWriter(new FileWriter(file, true))) {
if (fileExists && !newLineExists(file)) {
bw.newLine();
}
for (String value : values) {
bw.write(value);
bw.newLine();
}
} catch (IOException e) {
e.printStackTrace();
}
}
boolean newLineExists(File file) throws IOException {
RandomAccessFile fileHandler = new RandomAccessFile(file, "r");
long fileLength = fileHandler.length() - 1;
if (fileLength < 0) {
fileHandler.close();
return true;
}
fileHandler.seek(fileLength);
byte readByte = fileHandler.readByte();
fileHandler.close();
if (readByte == 0xA || readByte == 0xD) {
return true;
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1636 次 |
| 最近记录: |