java使用io流下载数据并保存到目标路径

需求:通过http,下载网络视频到u盘中或磁盘中

public static boolean copyDvrOrRecordFile(String filePath, String destPath, String fileName) {
	//网络连接
    HttpURLConnection connection = null;
    //包装流,使用装饰器模式,干活的还是传进来的对应的流
    //缓冲输入流,从外部资源比如网络,读取数据到内存中
    BufferedInputStream bufferedInputStream = null;
    //缓冲输出流,将内存中的数据,输出到对应的外部存储,比如u盘
    BufferedOutputStream bufferedOutputStream = null;
    try {
        URL url = new URL(filePath);
        connection = (HttpURLConnection) url.openConnection();
        connection.setConnectTimeout(Constants.GALLERY_NETWORK_REQUEST_TIME_OUT);
        InputStream inputStream = connection.getInputStream();
        //目标路径,如果不存在就创建对应的目录
        File fileDir = new File(destPath);
        if (!fileDir.exists()) {
            fileDir.mkdir();
        }
        //目标文件,将下载的数据存入目标设备,以及文件名
        File destFile = new File(fileDir, fileName);
        bufferedInputStream = new BufferedInputStream(inputStream);
        FileOutputStream fileOutputStream = new FileOutputStream(destFile);
        bufferedOutputStream = new BufferedOutputStream(fileOutputStream);
        byte[] buffer = new byte[Constants.GALLERY_NETWORK_SIZE];
        int len;
        //使用缓冲输出流,不停地写入字节
        while ((len = bufferedInputStream.read()) != -1) {
            bufferedOutputStream.write(buffer, 0, len);
        }
        //缓冲输出流刷新
        bufferedOutputStream.flush();
        return true;
    } catch (Exception e) {
        e.printStackTrace();
        return false;
    } finally {
    	//关闭相关的资源文件
        try {
            if (connection != null) {
                connection.disconnect();
            }
            if (bufferedInputStream != null) {
                bufferedInputStream.close();
            }
            if (bufferedOutputStream != null) {
                bufferedOutputStream.close();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

调用

在这里插入图片描述

实现效果

java使用io流下载数据并保存到目标路径_第1张图片
主要是为了熟悉基本的io的使用。

你可能感兴趣的:(java基础,java,开发语言)