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没有要打印的变量。啊。愚蠢的疏忽。非常感谢你。我对此感到非常尴尬。