java下载文件的疑问(java文件下载失败)

发布时间:2022-11-15

本文目录一览:

1、用JAVA下载HTTP文件时遇到问题
2、[java 文件下载出现错误信息:org.apache.catalina.connector.ClientAbortException:null](#java 文件下载出现错误信息:org.apache.catalina.connector.ClientAbortException:null)
3、请问一个java的文件下载的问题,为什么我的下载每次都看不到进度条,而是一下子就下好了呢?
4、java文件下载出错
5、下载java虚拟机启动器发现致命异常怎么回事.
6、[JAVA 文件下载问题](#JAVA 文件下载问题)

用JAVA下载HTTP文件时遇到问题

import java.net.*;
import java.io.*;
public class URLConnectionDemo{
    public static void main(String[] args)throws Exception{
        URL url = new URL("");
        URLConnection uc = url.openConnection();
        String fileName = uc.getHeaderField(6);
        fileName = URLDecoder.decode(fileName.substring(fileName.indexOf("filename=")+9),"UTF-8");
        System.out.println("文件名为:"+fileName);
        System.out.println("文件大小:"+(uc.getContentLength()/1024)+"KB");
        String path = "D:"+File.separator+fileName;
        FileOutputStream os = new FileOutputStream(path);
        InputStream is = uc.getInputStream();
        byte[] b = new byte[1024];
        int len = 0;
        while((len=is.read(b))!=-1){
            os.write(b,0,len);
        }
        os.close();
        is.close();
        System.out.println("下载成功,文件保存在:"+path);
    }
}

//给你一个下载的例子吧,仅供参考。

java 文件下载出现错误信息:org.apache.catalina.connector.ClientAbortException:null

可能是指定了文件大小的问题。猜测IE是下载到了指定的字节后自己断开了,导致服务器报错。把这句去掉试试:

response.setHeader("Content-Length", String.valueOf(fileLength));

请问一个java的文件下载的问题,为什么我的下载每次都看不到进度条,而是一下子就下好了呢?

建立新的线程来处理下载。去看Thread的API有详细说明。例如本来是:

downloading();
System.out.println("下载完成");

就改成:

class DownloadListener { //这个class自己找个地方放。
    public void downloadInProgress(double percent) {
        System.out.println("已下载" + percent);
    }
    public void downloadCompleted() {
        System.out.println("已下载完成");
    }
}
//从这里开始应该被改成的内容
DownloadListener downloadListener = new DownloadListener();
new Thread() {
    public void run() { //这里写第二线程的内容
        downloading(downloadListener); //于是downloadListener被传入了downloading函数,就可以在downloading函数内部通过呼叫downloadListener的downloadInProgress和downloadCompleted来通知第一线程下载情况。
    }
}.start(); //第一线程会在这里启动第二线程,然后不管第二线程执行了什么是否完成,直接执行下一句。
System.out.println("第二线程已经启动");

//例子里很多System.out.println是为了简明。实际情况一般是修改一个给用户看的状态栏JLabel,这里下载进行中时,应该是更新一个JProgressBar。

java文件下载出错

1、response.reset(); 不应该去reset 2、你参考下我以前写的这段下载pdf的文件吧,稍改下肯定能解决楼主的问题了。

ServletOutputStream out = res.getOutputStream();
// 用于解决下载后的中文乱码
String contentType = getContentType(fileExt);
// contentType=contentType+";charset=gbk";
res.setContentType(contentType);
System.out.println("显示下载的名称是:-------------------------------" + temp);
String contentHeader = "attachment" + ";" + "filename=\"" + URLEncoder.encode(temp, "UTF-8") + "\"";
res.setHeader("Content-disposition", contentHeader);
System.out.println("contentHeader is =" + contentHeader);
// int MAX_FILE_SIZE = 3 * 1024 * 1024; //此处设置文件最大尺寸,对本程序,不设置即可,3M
int byte_unit = 1024;
// byte[] buffer = new byte[MAX_FILE_SIZE]; 
byte[] buffer = new byte[byte_unit]; // 一次性读取文件的数据长度
int length = 0;
while ((length = is.read(buffer)) != -1) {
    out.write(buffer, 0, length);
}
if (is != null)
    is.close();
if (out != null) {
    out.flush();
    out.close();
}
// 获得内容类型
private static String getContentType(String fileExt) {
    String contentType = " ";
    if (fileExt == null)
        contentType = " ";
    else if (fileExt.equals("doc"))
        contentType = "application/msword ";
    else if (fileExt.equals("pdf"))
        contentType = "application/pdf";
    else if (fileExt.equals("jpg"))
        contentType = "image/jpeg";
    else if (fileExt.equals("gif"))
        contentType = "image/gif ";
    else if (fileExt.equals("bmp"))
        contentType = "image/bmp ";
    else if (fileExt.equals("txt"))
        contentType = "text/plain";
    else if (fileExt.equals("xls"))
        contentType = "application/-excel";
    return contentType;
}

下载java虚拟机启动器发现致命异常怎么回事.

修复Java虚拟机错误的解决方案:

  1. 为Java设置新的系统变量 当Java需要更大的全局最大堆内存大小时,通常会出现Java虚拟机错误。通过扩展分配给Java的最大RAM来解决该问题。用户可以通过建立新的Java System Variable来实现,如下所示。
  • 使用Windows键+ R键盘快捷键打开运行。
  • 在“运行”中输入“sysdm.cpl”,然后单击“确定”以打开窗口。
  • 选择该窗口上的“高级”选项卡。
  • 单击“环境变量”按钮。
  • 单击“系统变量”框下的“新建”按钮。
  • 在“变量名称”文本框中输入“_JAVA_OPTIONS”。
  • 然后在“变量值”文本框中输入“-Xmx512M”,这会将RAM分配增加到512 MB。
  • 单击“确定”按钮关闭窗口。
  • 然后按环境窗口上的确定按钮。
  1. 选择“以管理员身份运行Java选项” Java虚拟机错误也可能是由于管理员权限不足造成的。因此,某些用户可能需要为Java分配管理员权限。用户可以在Windows 10中为Java分配管理员权限,如下所示。
  • 使用Windows键+ Q键盘快捷键打开Cortana。
  • 在搜索框中输入“Java”。
  • 然后右键单击Java并选择打开文件位置以在文件资源管理器中打开Java的文件夹。
  • 现在,用户可以右键单击java.exe并选择“属性”。
  • 选择兼容性选项卡。
  • 选择“以管理员身份运行此程序”选项。
  • 选择“应用”选项。
  • 单击“确定”关闭窗口。
  1. 重新安装Java 重新安装Java也可能会修复某些用户的Java虚拟机错误。首先,在“运行”中输入“appwiz.cpl”并单击“确定”,卸载当前安装的Java版本。
  • 在搜索框中输入“Java”。
  • 选择Java,然后单击卸载。
  • 在打开的任何确认窗口中点击“是”。
  • 此后,重新启动Windows。
  • 然后在浏览器中打开Java下载页面。
  • 用户需要32位Java用于32位程序,64位Java用于64位软件。如果有疑问,最好的办法是通过单击Windows Offline和Windows Offline 64位来下载和安装两个Java版本。
  • 此后,打开Java安装向导。
  • 单击安装向导上的“安装”按钮。

JAVA 文件下载问题

如果是本地服务器的话,应该把文件发布,会生成一个url,用这个url就可以下载了。