本文主要是介绍Java语言程序设计基础篇_编程练习题*17.10 (分割文件),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
目录
题目:*17.10 (分割文件)
代码示例
输出结果
题目:*17.10 (分割文件)
假设希望在 CD-R 上备份一个大文件(例如,一个 10GB 的 AVI文件)。可以将该文件分割为几个小一些的片段,然后独立备份这些小片段。编写一个工具程序,使用下面的命令将一个大文件分割为小一些的文件:
java Exercisel7_10 SourceFile numberOfPieces
这个命令创建文件 SourceFile.1, SourceFile.2, •••, SourceFile.n, 这里的n是 numberOfPieces 而输出文件的大小基本相同。
-
代码示例
编程练习题17_10splitFile.java
package chapter_17;import java.io.DataOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.RandomAccessFile; public class 编程练习题17_10splitFile { public static void main(String[] args) throws IOException { if (args.length != 2) { System.out.println("Usage: java 编程练习题17_10splitFile <inputFile> <numberOfParts>"); System.exit(1); } File file = new File(args[0]); int num = Integer.parseInt(args[1]); try (RandomAccessFile raf = new RandomAccessFile(file, "r")) { long allLength = raf.length(); long splitLength = (allLength + num - 1) / num; // 确保最后一个文件也能包含剩余内容 byte[] buffer = new byte[(int) Math.min(splitLength, Integer.MAX_VALUE)]; int fileIndex = 1; int bytesRead; while ((bytesRead = raf.read(buffer)) != -1) { try (DataOutputStream output = new DataOutputStream(new FileOutputStream("Text/Exercise17_10_" + fileIndex + ".txt"))) { output.write(buffer, 0, bytesRead); // 写入实际读取的字节数 } fileIndex++; } } }
}
-
输出结果
这篇关于Java语言程序设计基础篇_编程练习题*17.10 (分割文件)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!