(分割文件)假设希望在 CD-R 上备份一个大文件(例如,一个 10GB 的 AVI文件)。可以将该文件分割为几个小一些的片段,然后独立备份这些小片段。编写一个工具程序,使用下面的命令将一个大文件分割为小一些的文件: java Exercisel7_10 SourceFile nuiiberOfPieces 这个命令创建文件 SourceFile.l , SourceFile.2, ..., SourceFile.n, 这 里 的 n 是 numberOfPieces 而输出文件的大小基本相同。
时间: 2024-02-23 09:59:01 浏览: 77
java 把大文件分割为小文件
好的,我明白了你的问题。以下是一个 Java 工具程序的示例,用于将大文件分割为指定数量的小文件:
```java
import java.io.*;
public class FileSplitter {
public static void main(String[] args) {
if (args.length != 2) {
System.out.println("Usage: java FileSplitter SourceFile NumberOfPieces");
return;
}
String sourceFile = args[0];
int numberOfPieces = Integer.parseInt(args[1]);
try (InputStream in = new BufferedInputStream(new FileInputStream(sourceFile))) {
long fileSize = new File(sourceFile).length();
long pieceSize = (fileSize + numberOfPieces - 1) / numberOfPieces;
for (int i = 1; i <= numberOfPieces; i++) {
String destFile = String.format("%s.%d", sourceFile, i);
try (OutputStream out = new BufferedOutputStream(new FileOutputStream(destFile))) {
long bytesLeft = pieceSize;
while (bytesLeft > 0) {
byte[] buffer = new byte[1024];
int bytesRead = in.read(buffer, 0, (int)Math.min(buffer.length, bytesLeft));
if (bytesRead == -1) break;
out.write(buffer, 0, bytesRead);
bytesLeft -= bytesRead;
}
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
你可以将该代码保存为 `FileSplitter.java`,然后使用以下命令编译它:
```
javac FileSplitter.java
```
接下来,使用以下命令将大文件分割为小文件:
```
java FileSplitter SourceFile NumberOfPieces
```
其中,`SourceFile` 是要分割的大文件名,`NumberOfPieces` 是要分割成的小文件数量。
例如,如果要将名为 `large.avi` 的文件分割为 4 个小文件,可以使用以下命令:
```
java FileSplitter large.avi 4
```
该命令将创建以下文件:
```
large.avi.1
large.avi.2
large.avi.3
large.avi.4
```
这些文件的大小基本相同,并且可以独立备份。
阅读全文