Java简单备份和恢复类
我正在做一个学校项目,在Java简单备份和恢复类,java,backup,restore,Java,Backup,Restore,我正在做一个学校项目,在Java中有一个简单的备份和恢复类。它有两种方法,一种用于备份,另一种用于还原,将文件分解为程序确定的大小的块,然后使用还原从这些块中重建文件 具体来说,我被困在备份部分: 我想将文件分割成与partSize大小相等的小块,并创建名为filename.1、filename.2等的输出文件。然后返回一个包含创建的计数文件的整数 这是我的代码: public static int backup(String filename, double partSize) thr
Java
中有一个简单的备份和恢复类。它有两种方法,一种用于备份,另一种用于还原,将文件分解为程序确定的大小的块,然后使用还原从这些块中重建文件
具体来说,我被困在备份部分:
我想将文件分割成与partSize大小相等的小块,并创建名为filename.1、filename.2等的输出文件。然后返回一个包含创建的计数文件的整数
这是我的代码:
public static int backup(String filename, double partSize) throws Exception {
BufferedInputStream input = new BufferedInputStream(new FileInputStream(filename));
int splitFileSize = (int) (partSize * 1024 * 1024);
int numberOfPieces = (input.available() / splitFileSize) + 1;
String fn = "filename.";
int i = 1;
int b = 0;
BufferedOutputStream output = new BufferedOutputStream(new FileOutputStream(fn + i));
while (numberOfPieces > 0) {
output.write(input.read());
b++;
if (b == splitFileSize) {
output.close();
i++;
numberOfPieces--;
output = new BufferedOutputStream(new FileOutputStream(fn + i));
}
}
output.close();
input.close();
System.out.println("Number of files created: ");
return i;
}
注意:在测试中,我认为它卡在一个无限循环中。知道为什么吗
谢谢大家!!谢谢你的编辑,让事情更清楚 运行if时,代码不会重置b值。
您创建了一个新文件,但b变量继续增加,因此if将只执行一次。
如果将b值设置为0,请尝试在内部添加一行
if (b == splitFileSize) {
output.close();
i++;
numberOfPieces--;
output = new BufferedOutputStream(new FileOutputStream(fn + i));
b=0;
}
你试过调试吗?不,说实话,在eclipse中调试对我来说很难掌握。这是作为一名新程序员你将学到的最关键的技能之一。现在就开始吧。是的,谢谢你让我看到了这一点。事实上,我完全忘记了,我必须复习一下。这就停止了无限循环!谢谢但现在它不返回值。到底发生了什么?返回不同的东西?或者不返回任何内容(即引发异常或错误)?它只是:创建的文件数:然后什么也不返回。这只是一个打印。不是回归。您的println没有要打印的变量。啊。愚蠢的疏忽。非常感谢你。我对此感到非常尴尬。