我的一些用户无法下载zip?

时间:2015-10-23 20:24:46

标签: java download zip

你好,所以我一直在为我的游戏写一个更新程序。

1)它检查下拉框中的.version文件,并将其与本地.version文件进行比较。

2)如果文件的本地版本中缺少任何链接,它会逐个下载所需的链接。

我遇到的问题是一些用户可以下载拉链,有些则不能。

我遇到此问题的用户之一是使用Windows XP。所以他们中的一些人有旧电脑。

我想知道是否有人可以帮助我了解导致这种情况的原因。

这是运行的主要方法

    public void UpdateStart() {
    System.out.println("Starting Updater..");

    if(new File(cache_dir).exists() == false) {
        System.out.print("Creating cache dir.. ");
        while(new File(cache_dir).mkdir() == false);
        System.out.println("Done");
    }


    try {
        version_live = new Version(new URL(version_file_live));
    } catch(MalformedURLException e) {
        e.printStackTrace();
    }

    version_local = new Version(new File(version_file_local));

    Version updates = version_live.differences(version_local);

    System.out.println("Updated");

    int i = 1;
    try {
        byte[] b = null, data = null;
        FileOutputStream fos = null;
        BufferedWriter bw = null;


        for(String s : updates.files) {
            if(s.equals(""))
                continue;

            System.out.println("Reading file "+s);
            text = "Downloading file "+ i + " of "+updates.files.size();
            b = readFile(new URL(s));

            progress_a = 0;
            progress_b = b.length;

            text = "Unzipping file "+ i++ +" of "+updates.files.size();

            ZipInputStream zipStream = new ZipInputStream(new ByteArrayInputStream(b));
            File f = null, parent = null;
            ZipEntry entry = null;
            int read = 0, entry_read = 0;
            long entry_size = 0;
            progress_b = 0;

            while((entry = zipStream.getNextEntry()) != null)
                progress_b += entry.getSize();

            zipStream = new ZipInputStream(new ByteArrayInputStream(b));

            while((entry = zipStream.getNextEntry()) != null) {
                f = new File(cache_dir+entry.getName());
                if(entry.isDirectory())
                    continue;

                System.out.println("Making file "+f.toString());

                parent = f.getParentFile();
                if(parent != null && !parent.exists()) {
                    System.out.println("Trying to create directory "+parent.getAbsolutePath());
                    while(parent.mkdirs() == false);
                }

                entry_read = 0;
                entry_size = entry.getSize();
                data = new byte[1024];
                fos = new FileOutputStream(f);

                while(entry_read < entry_size) {
                    read = zipStream.read(data, 0, (int)Math.min(1024, entry_size-entry_read));
                    entry_read += read;
                    progress_a += read;
                    fos.write(data, 0, read);
                }
                fos.close();
            }

            bw = new BufferedWriter(new FileWriter(new File(version_file_local), true));
            bw.write(s);
            bw.newLine();
            bw.close();
        }
    } catch(Exception e) {
        this.e = e;
        e.printStackTrace();
        return;
    }

    System.out.println(version_live);
    System.out.println(version_local);
    System.out.println(updates);
     try {

     } catch (Exception er) {
         er.printStackTrace();
     }
}

过去两天我一直试图解决这个问题,而且我在这一点上非常难过

一切顺利, 基督教

0 个答案:

没有答案