下载空文件但不应该的代码

时间:2016-10-15 03:52:06

标签: java

我有这部分功能,它应该从服务器下载pdf文件并存储在新目录中。它确实这样做,但是一个空的pdf或文本文件。如何解决它。

 `File urlfile = new File(host + "/" + path);
            urlfile.getParentFile().mkdirs();
            // create outputstream for request and inputstream for data
            // download

            FileOutputStream outS = new FileOutputStream(urlfile);
            DataInputStream instream = new DataInputStream(newsocket.getInputStream());

            // get rid of head part to get to actual file
            String l = null;
            String lastmodtime = null;
            boolean done = false;
            while (!(l = DAA.readLine()).equals("")) {

                if (!done && l.contains("Last-Modified:")) {
                    lastmodtime = l.substring(l.indexOf(' ') + 1, l.length());
                    done = true;
                    System.out.println(l);
                }
            }

            // read in bytes to correct file name
            try {
                byte[] inbytes = new byte[16384];
                int input;
                while ((input = instream.read(inbytes)) != -1) {
                    outS.write(inbytes, 0, input);

                 }
             }`

1 个答案:

答案 0 :(得分:1)

如果要创建文件的副本,或者甚至可以使用apache commons io(FileUtils.copyFile(source, dest))进行java复制文件操作,则可以尝试使用此简单代码。

private static void copyFileUsingStream(File source, File dest)
            throws IOException {
        InputStream is = null;
        OutputStream os = null;
        try {
            is = new FileInputStream(source);
            os = new FileOutputStream(dest);
            byte[] buffer = new byte[1024];
            int length;
            while ((length = is.read(buffer)) > 0) {
                os.write(buffer, 0, length);
            }
        } finally {
            is.close();
            os.close();
        }
    }