通过使用java代码传递URL下载文件[重复]

Posted

技术标签:

【中文标题】通过使用java代码传递URL下载文件[重复]【英文标题】:Download file by passing URL using java code [duplicate] 【发布时间】:2011-01-19 02:56:36 【问题描述】:

我正在尝试用 java 编写代码,其中用户提供 url 链接,程序获取 url 链接并按原样下载网页并保存在特定位置..与另存为...选项可用网页。

谁能帮帮我

提前致谢

【问题讨论】:

你能说一下你到目前为止做了什么吗?你在什么时候卡住了? 【参考方案1】:

// 示例网址:http://www.novell.com/coolsolutions/tools/downloads/ntradping.zip

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


public class UrlDownload 
    final static int size = 1024;

    public static void fileUrl(String fAddress, String localFileName, String destinationDir) 
        OutputStream outStream = null;
        URLConnection uCon = null;

        InputStream is = null;
        try 
            URL url;
            byte[] buf;
            int byteRead, byteWritten = 0;
            url = new URL(fAddress);
            outStream = new BufferedOutputStream(new FileOutputStream(destinationDir + "\\" + localFileName));

            uCon = url.openConnection();
            is = uCon.getInputStream();
            buf = new byte[size];
            while ((byteRead = is.read(buf)) != -1) 
                outStream.write(buf, 0, byteRead);
                byteWritten += byteRead;
            
            System.out.println("Downloaded Successfully.");
            System.out.println("File name:\"" + localFileName + "\"\nNo ofbytes :" + byteWritten);
         catch (Exception e) 
            e.printStackTrace();
         finally 
            try 
                is.close();
                outStream.close();
             catch (IOException e) 
                e.printStackTrace();
            
        
    

    public static void fileDownload(String fAddress, String destinationDir) 
        int slashIndex = fAddress.lastIndexOf('/');
        int periodIndex = fAddress.lastIndexOf('.');

        String fileName = fAddress.substring(slashIndex + 1);

        if (periodIndex >= 1 && slashIndex >= 0 && slashIndex < fAddress.length() - 1) 
            fileUrl(fAddress, fileName, destinationDir);
         else 
            System.err.println("path or file name.");
        
    

    public static void main(String[] args) 
        if (args.length == 2) 
            for (int i = 1; i < args.length; i++) 
                fileDownload(args[i], args[0]);
            
         else 
        
    

它正在充分发挥作用。

【讨论】:

请检查您的代码,也许 fileDownload(args[i], args[0]); 语句中的参数应该交换。【参考方案2】:

看看htmlParser。它有一些功能可以帮助您从网页中提取资源。

【讨论】:

【参考方案3】:

您可以使用 Java URL API 获取 URL 上的输入流,然后从中读取并通过输出流写入文件。

见read data from url、Write to file

【讨论】:

以上是关于通过使用java代码传递URL下载文件[重复]的主要内容,如果未能解决你的问题,请参考以下文章

ajax方式下载文件

使用java编写一个多线程下载器,需要在URL栏中输入网址,然后通过网址下载。该怎么实现,求源代码

从firebase函数获取云存储中文件的永久可公开下载URL [重复]

确定我正在下载的文件的 MIME 类型 [重复]

如何使用从适配器传递的 url 下载图像

前端实现文件下载为什么不能用AJAX