「java静态资源下载」javaweb静态资源

博主:adminadmin 2022-11-25 09:47:06 62

今天给各位分享java静态资源下载的知识,其中也会对javaweb静态资源进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

求问Java文件下载的几种方式

InputStream fis = new BufferedInputStream(new FileInputStream(path));byte[] buffer = new byte[fis.available()];fis.read(buffer);fis.close();// 清空responseresponse.reset();// 设置response的Headerresponse.addHeader("Content-Disposition", "attachment;filename=" + new String(filename.getBytes()));response.addHeader("Content-Length", "" + file.length());OutputStream toClient = new BufferedOutputStream(response.getOutputStream());response.setContentType("application/octet-stream");toClient.write(buffer);toClient.flush();toClient.close();} catch (IOException ex) {ex.printStackTrace();}return response;}public void downloadLocal(HttpServletResponse response) throws FileNotFoundException {// 下载本地文件String fileName = "Operator.doc".toString(); // 文件的默认保存名// 读到流中InputStream inStream = new FileInputStream("c:/Operator.doc");// 文件的存放路径// 设置输出的格式response.reset();response.setContentType("bin");response.addHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\"");// 循环取出流中的数据byte[] b = new byte[100];int len;try {while ((len = inStream.read(b)) 0)response.getOutputStream().write(b, 0, len);inStream.close();} catch (IOException e) {e.printStackTrace();}}public void downloadNet(HttpServletResponse response) throws MalformedURLException {// 下载网络文件int bytesum = 0;int byteread = 0;URL url = new URL("windine.blogdriver.com/logo.gif");try {URLConnection conn = url.openConnection();InputStream inStream = conn.getInputStream();FileOutputStream fs = new FileOutputStream("c:/abc.gif");byte[] buffer = new byte[1204];int length;while ((byteread = inStream.read(buffer)) != -1) {bytesum += byteread;System.out.println(bytesum);fs.write(buffer, 0, byteread);}} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}} //支持在线打开文件的一种方式public void downLoad(String filePath, HttpServletResponse response, boolean isOnLine) throws Exception {File f = new File(filePath);if (!f.exists()) {response.sendError(404, "File not found!");return;}BufferedInputStream br = new BufferedInputStream(new FileInputStream(f));byte[] buf = new byte[1024];int len = 0;response.reset(); // 非常重要if (isOnLine) { // 在线打开方式URL u = new URL("" + filePath);response.setContentType(u.openConnection().getContentType());response.setHeader("Content-Disposition", "inline; filename=" + f.getName());// 文件名应该编码成UTF-8} else { // 纯下载方式response.setContentType("application/x-msdownload");response.setHeader("Content-Disposition", "attachment; filename=" + f.getName());}OutputStream out = response.getOutputStream();while ((len = br.read(buf)) 0)out.write(buf, 0, len);br.close();out.close();}

java servlet 返回静态资源,静态资源可以边下边播,而通过servlet返回的视频一定要下载完成后才能播放。

Apache默认是一个静态服务器,只能通过它访问静态的资源,比如html等。而Servlet的运行必须要支持Servlet标准的Web容器,像Tomcat、Jboss、Weblogic、WebSphere、Jetty等都支持。 有时候也可以将Apache和Tomcat结合起来,各司其职。

java静态资源(静态方法,静态属性)是程序一运行就加载到jvm中,还是当被调用的时候才进行加载呢?

当类第一次被调用时加载(静态方法,静态属性的加载就是类加载) 。

1、类中的静态属性会被加入到类对象(也可以叫做类的模板,是类的描述) 的构造器中,静态方法也会被加入到类对象中。

2、当第一次使用类时,JVM会通过类加载器,加载类对象,从而初始化静态属性,并装入类的方法,包括静态方法和实例方法(方法不会被调用,只是加载,从这个意义上来说,静态方法和实例方法是类似的)。

3、当创建类的实例对象时,JVM会调用类的构造器,从而初始化类的属性。

扩展资料:

类(包括静态方法、属性)加载过程:

一、加载。

根据一个类的全限定名(如cn.edu.hdu.test.HelloWorld.class)来读取此类的二进制字节流到JVM内部。

将字节流所代表的静态存储结构转换为方法区的运行时数据结构(hotspot选择将Class对象存储在方法区中,Java虚拟机规范并没有明确要求一定要存储在方法区或堆区中)转换为一个与目标类型对应的java.lang.Class对象。

二、连接。

1、验证。

验证阶段主要包括四个检验过程:文件格式验证、元数据验证、字节码验证和符号引用验证;

2、准备。

为类中的所有静态变量分配内存空间,并为其设置一个初始值(由于还没有产生对象,实例变量将不再此操作范围内);

3、解析。

将常量池中所有的符号引用转为直接引用(得到类或者字段、方法在内存中的指针或者偏移量,以便直接调用该方法)。这个阶段可以在初始化之后再执行。

参考资料:

百度百科--Java类加载器

百度百科--JVM

java ftp下载

这个和ftp没有太大关系,只是一个普通的下载,java连接ftp服务器传输文件是需要提供ip 端口号,用户名密码 路径的,这个只是一个静态资源,用这个就可以,支持断点续传

这边用到了apache commons-httpclient-3.1包

import java.io.File;

import java.io.IOException;

import java.io.InputStream;

import java.io.RandomAccessFile;

import org.apache.http.HttpEntity;

import org.apache.http.HttpResponse;

import org.apache.http.client.ClientProtocolException;

import org.apache.http.client.HttpClient;

import org.apache.http.client.methods.HttpGet;

import org.apache.http.impl.client.DefaultHttpClient;

@SuppressWarnings("deprecation")

public class DownloadTool {

    public static void main(String[] args) throws ClientProtocolException, IOException {

        String url = "

[阳光电影

].神探驾到.BD.720p.国粤双语中字.mkv";

        String downFile = "d:\\aaa.mkv";//本地存放路径

        Long netFileLenght = getNetFileSize(url);

        Long localFileLenght = getLocalFileSize(downFile);

        if (localFileLenght = netFileLenght) {

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

            return;

        }

        System.out.println("netFileLenght : " + netFileLenght + " localFileLenght : " + localFileLenght);

        final HttpClient httpClient = new DefaultHttpClient();

        httpClient.getParams().setIntParameter("http.socket.timeout", 5000);

        final HttpGet httpGet = new HttpGet(url);

        httpGet.addHeader("Range", "bytes=" + localFileLenght + "-");

        final HttpResponse response = httpClient.execute(httpGet);

        final int code = response.getStatusLine().getStatusCode();

        final HttpEntity entity = response.getEntity();

        System.out.println(code);

        if (entity != null  code  400) {

            File file = new File(downFile);

            RandomAccessFile randomAccessFile = new RandomAccessFile(file, "rw");

            randomAccessFile.seek(localFileLenght);

            InputStream inputStream = entity.getContent();

            int b = 0;

            final byte buffer[] = new byte[1024];

            while ((b = inputStream.read(buffer)) != -1) {

                randomAccessFile.write(buffer, 0, b);

            }

            randomAccessFile.close();

            inputStream.close();

            httpClient.getConnectionManager().shutdown();

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

        }

    }

    public static Long getLocalFileSize(String fileName) {

        File file = new File(fileName);

        return file.length();

    }

    public static Long getNetFileSize(String url) {

        Long count = -1L;

        final HttpClient httpClient = new DefaultHttpClient();

        httpClient.getParams().setIntParameter("http.socket.timeout", 5000);

        final HttpGet httpGet = new HttpGet(url);

        HttpResponse response = null;

        try {

            response = httpClient.execute(httpGet);

            final int code = response.getStatusLine().getStatusCode();

            final HttpEntity entity = response.getEntity();

            if (entity != null  code == 200) {

                count = entity.getContentLength();

            }

        } catch (ClientProtocolException e) {

            e.printStackTrace();

        } catch (IOException e) {

            e.printStackTrace();

        } finally {

            httpClient.getConnectionManager().shutdown();

        }

        return count;

    }

}

关于java静态资源下载和javaweb静态资源的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

The End

发布于:2022-11-25,除非注明,否则均为首码项目网原创文章,转载请注明出处。