如何下载文件并在本地获取路径位置

时间:2015-10-20 08:20:13

标签: java

我有一个网址,http://downloadplugins.verify.com/Windows/SubAngle.exe。 如果我将其粘贴到选项卡上并按Enter键,则文件(SubAngle.exe)将被下载并保存在下载文件夹中。这是手动过程。但是可以使用java代码完成。 我用文件名的帮助编写了获取绝对路径的代码,即SubAngle.exe。

要求: - 在下载URL文件的帮助下,验证文件是否已下载并返回文件的绝对路径。

where  locfile is "http://downloadplugins.verify.com/Windows/SubAngle.exe"  

  public String downloadAndVerifyFile(String locfile) {
     File fileLocation = new File(locfile); 
     File fileLocation1 = new File(fileLocation.getName());
     String fileLocationPath = null;
     if(fileLocation.exists()){
      fileLocationPath = fileLocation1.getAbsolutePath();

     }
     else{
         throw new FileNotFoundException("File with name "+locFile+" may not exits at the location");
     }
     return fileLocationPath;
}

3 个答案:

答案 0 :(得分:0)

从网址下载文件的代码

import java.net.*;
import java.io.*;

public class DownloadFile {
    public static void main(String[] args) throws IOException {
        InputStream in = null;
        FileOutputStream out = null;
        try {
            // URL("http://downloadplugins.verify.com/Windows/SubAngle.exe");
            System.out.println("Starting download");
            long t1 = System.currentTimeMillis();
            URL url = new URL(args[0]);
            // Open the input and out files for the streams
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            in = conn.getInputStream();
            out = new FileOutputStream("YourFile.exe");
            // Read data into buffer and then write to the output file
            byte[] buffer = new byte[8192];
            int bytesRead;
            while ((bytesRead = in.read(buffer)) != -1) {
                out.write(buffer, 0, bytesRead);
            }
            long t2 = System.currentTimeMillis();
            System.out.println("Time for download & save file in millis:"+(t2-t1));
        } catch (Exception e) {
            // Display or throw the error
            System.out.println("Erorr while execting the program: "
                    + e.getMessage());
        } finally {
            // Close the resources correctly
            if (in != null) {
                in.close();
            }
            if (out != null) {
                out.close();
            }
        }

    }

}

正确配置fileName的值以了解文件的存储位置。  资料来源:http://www.devmanuals.com/tutorials/java/corejava/files/java-read-large-file-efficiently.html

修改了源代码以使用http URL

替换本地文件

输出:

  

java DownloadFile http://download.springsource.com/release/TOOLS/update/3.7.1.RELEASE/e4.5/springsource-tool-suite-3.7.1.RELEASE-e4.5.1-updatesite.zip

开始下载

下载时间&以毫秒保存文件:100184

答案 1 :(得分:0)

不要编写这么大的代码,而是选择 Apache' commons.io 试试这个:

URL ipURL = new URL("inputURL");
File opFile = new File("outputFile");
FileUtils.copyURLToFile(ipURL, opFile);

答案 2 :(得分:0)

使用的简单易用的通用功能

import org.apache.commons.io.FileUtils;

public static void downLoadFile(String fromFile, String toFile) throws MalformedURLException, IOException {
        try {
            FileUtils.copyURLToFile(new URL(fromFile), new File(toFile), 60000, 60000);

        } catch (FileNotFoundException e) {
            e.printStackTrace();
            System.out.println("exception on: downLoadFile() function: " + e.getMessage());
        }
    }