Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 下载长文件会冻结计算机_Java - Fatal编程技术网

Java 下载长文件会冻结计算机

Java 下载长文件会冻结计算机,java,Java,我为我的游戏私掠者做了一个发射器。它工作完美,下载所有需要的东西——但是,由于某种原因,它冻结了整个电脑 冻结通常发生在做某事时,如果我在电脑前等待下载完成,那么什么也不会发生。然而,当我在妈妈玩“坦克世界”游戏的电脑上测试时,电脑几乎立刻冻结了。如果我玩游戏,那么发射器也会冻结我的电脑 我用Windows8,我妈妈用Windows7 在我自己的计算机上,当这种情况发生时,我可以非常缓慢地移动鼠标(延迟30秒到2分钟),alt+tab不起作用,control+alt+delete起作用(但打开任

我为我的游戏私掠者做了一个发射器。它工作完美,下载所有需要的东西——但是,由于某种原因,它冻结了整个电脑

冻结通常发生在做某事时,如果我在电脑前等待下载完成,那么什么也不会发生。然而,当我在妈妈玩“坦克世界”游戏的电脑上测试时,电脑几乎立刻冻结了。如果我玩游戏,那么发射器也会冻结我的电脑

我用Windows8,我妈妈用Windows7

在我自己的计算机上,当这种情况发生时,我可以非常缓慢地移动鼠标(延迟30秒到2分钟),alt+tab不起作用,control+alt+delete起作用(但打开任务管理器时,任务管理器不会出现)。 在我妈妈的电脑上,基本上是一样的,除了鼠标工作正常外,所有东西都是100%冷冻的

只有在下载大型(5MB+)文件时才会发生这种情况。当我的启动器下载较小的文件时,没有问题

我使用以下代码下载文件:

void download(String source, String destination, int size) {

    File ofile = new File(System.getProperty("user.dir") + "", destination);
    System.out.printf("\nDownloading\n\t%s\nTo\n\t%s\n", source, destination);
    try {
        if (ofile.exists()) ofile.delete();
        if (!ofile.createNewFile()) {
            throw new IOException("Can't create " + ofile.getAbsolutePath());
        }

        int inChar = 0;
        URL url = new URL(source);
        InputStream input = url.openStream();
        FileOutputStream fos = new FileOutputStream(ofile);
        for (int i = 0; i < size && inChar != -1; i++) {
            int percentage = (int) ((i * 100.0f) / size);

            progressBar.setValue(((int) ((percentage * 100.0f) / 100)));
            fr.setTitle(ofile.getName() + ": " + progressBar.getValue() + "%" + " Total: " + oprogressBar.getValue() + "%");
            inChar = input.read();
            fos.write(inChar);
        }

        input.close();
        fos.close();
        System.out.println("Downloaded " + ofile.getAbsolutePath());
    } catch (EOFException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
}
void下载(字符串源、字符串目标、整数大小){
File of ile=新文件(System.getProperty(“user.dir”)+“”,destination);
System.out.printf(“\n下载\n\t%s\nTo\n\t%s\n”,源,目标);
试一试{
如果文件的(of ile.exists())of ile.delete();
如果(!ofile.createNewFile()){
抛出新IOException(“无法创建”+ofile.getAbsolutePath());
}
int英寸=0;
URL=新URL(源);
InputStream输入=url.openStream();
FileOutputStream fos=新的FileOutputStream(ofile);
对于(int i=0;i

在互联网上搜索时,我一直无法找到这种情况的副本。非常感谢您的帮助。

也许多线程技术可以帮您解决这个问题


有关它的更多信息,请参见

,也许多线程技术可以帮助您解决这个问题


有关它的更多信息,请参见

缓冲输入流,或一次读取多个字符,或同时读取两个字符。

缓冲输入流,或一次读取多个字符,或同时读取两个字符。

这很快-对您的好主意投赞成票。如果它解决了这个问题,我会接受答案,尽管我个人怀疑它会。它可以工作,但它看起来像是冰毒:P的下载程序(将其转换为MP4模式)。它并不完美,而且我在显示下载时遇到了问题%-但是,它可以工作:)。这很快-对你的好主意投赞成票。如果它解决了这个问题,我会接受答案,尽管我个人怀疑它会。它可以工作,但它看起来像冰毒:P上的下载程序(将其转换为MP4模式)。它并不完美,而且我在显示下载时遇到问题%-但是,它可以工作:)。