繁体   English   中英

检查文件末尾是否存在新行

[英]Check if a new line exists at end of file

我创建了一个简单的方法来将文本追加到文件:

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();
    }
}

但是,对于如何在写入之前检查文件末尾是否存在新行以确保正确存储,我一无所知。

同样,在处理较大文件时,它必须具有可伸缩性。

感谢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;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM