首页 > 编程知识 正文

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

时间:2023-12-23 21:12:47 阅读:319378 作者:GOHM

本文目录一览:

用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。

单击“ 确定”按钮关闭窗口。

然后按环境窗口上的确定按钮。

2.选择“以管理员身份运行Java选项”

Java虚拟机错误也可能是由于管理员权限不足造成的。因此,某些用户可能需要为Java分配管理员权限。用户可以在Windows 10中为Java分配管理员权限,如下所示。

使用Windows键+ Q键盘快捷键打开Cortana。

在搜索框中输入“Java”。

然后右键单击Java并选择打开文件位置以在文件资源管理器中打开Java的文件夹。

现在,用户可以右键单击java.exe并选择“ 属性”。

选择兼容性选项卡。

选择“以管理员身份运行此程序”选项。

选择“ 应用”选项。

单击“ 确定”关闭窗口。

3.重新安装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就可以下载了。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。