Java如何复制文件的一部分

标签 java file-io

我必须读取一个文件,并且根据最后几行的内容,我必须将其大部分内容复制到一个新文件中。不幸的是,我没有找到一种方法来复制 java 中文件的前 n 行或字符。
我发现的唯一方法是使用 nio FileChannels 复制文件,我可以在其中指定长度(以字节为单位)。但是,因此我需要知道我读取的内容在源文件中需要多少字节。

有谁知道这些问题的解决方案吗?

最佳答案

试试这个:

Scanner scanner = new Scanner(yourFileObject); // initialise scanner

然后

for (int i = 0; i < amountOfLines; i++) {
    String line = scanner.nextLine(); // get line excluding \n at the end
    // handle here
}

OR,对于 n 字符,而不是行:

Pattern charPattern = Pattern.compile(".")
// java.util.regex.Pattern with any char allowed
for (int i = 0; i < amountOfChars; i++) {
    char next = scanner.next(charPattern).toCharArray()[0];
    // handle here
}

在我看来,这是迄今为止从文件中获取前 n 个字符/行的最佳且最容易编写的方法。

关于Java如何复制文件的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25168907/

相关文章:

java - 哈希表替代方案以获得更好的性能

c++ - 使用 C++ STL 读取大于 4GB 的文件

java - 在java中将XML block 提取到另一个XML文件中

java - Spring boot中spring-boot-starter-jersey资源上@Component注解的用途

java - 如果您有一个 Java 应用程序在它什么都不做时消耗 CPU,您如何确定它在做什么?

java - JSP和Servlet生命周期方法

java - 无法从 START_ARRAY token 中反序列化 java.lang.String 的实例

c++ - C++ 和 eof 中的文件读取

c++ - outData.txt 没有输出正确的值

c++ - 文件 IO 默认参数问题