栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

【Java基础】IO

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【Java基础】IO

参考文章

文章目录
  • 【Java基础】IO
    • File
    • FileInputStream
    • FileOutputStream
    • FileReader
    • FileWriter
    • BufferedInputStream
    • BufferedOutputStream
    • ZipOutputStream压缩包

【Java基础】IO File

File类接收路径,判断文件是否存在,若不存在则创建文件。

String IMG_PATH = "/Users/mac/documents/project";

 public void getFile(){
     File file = new File(IMG_PATH);
     if (!file.exists()) {
         log.info("文件不存在!!!");
         file.mkdir();
         log.info("文件新建完成!!!");
     }
 }
FileInputStream
    
    public void inputStreamFile() throws IOException {
        FileInputStream fis=null;
        try {
            //创建字节输入流
            fis=new FileInputStream(IMG_PATH);
            //创建一个长度为1024的竹筒
            byte[] b=new byte[1024];
            //用于保存的实际字节数
            int hasRead=0;
            //使用循环来重复取水的过程
            while((hasRead=fis.read(b))>0){
                System.out.println(">>>>>>>>>>>>>>>>"+hasRead);
            }
        }catch (IOException e){
            log.error("读取异常"+e);
        }finally {
            fis.close();
        }
    }
FileOutputStream
    
    public void getFileReaderOutput() throws IOException{
        //创建文件夹
        File file = new File(MAKEDIR_TEXT_PATH);
        if (!file.exists()) {
            log.info("文件不存在!!!");
            file.mkdir();
            log.info("文件新建完成!!!");
        }

        FileInputStream fis=null;
        FileOutputStream fos=null;
        try {

            //创建字节输入流
            fis=new FileInputStream(TEXT_PATH);
            //创建字节输出流
            fos=new FileOutputStream(TEXT_PATH_NEW);

            byte[] b=new byte[1024];
            int hasRead=0;

            //循环从输入流中取出数据
            while((hasRead=fis.read(b))>0){
                //每读取一次,即写入文件输入流,读了多少,就写多少。
                fos.write(b,0,hasRead);
            }
        }catch (IOException e){
            e.printStackTrace();
        }finally {
            fis.close();
            fos.close();
        }
    }
FileReader
    
    public void getFileReader() throws IOException {
        FileReader fis=null;
        try {
            //创建字节输入流
            fis=new FileReader(TEXT_PATH);
            //创建一个长度为1024的竹筒
            char[] b=new char[1024];
            //用于保存的实际字节数
            int hasRead=0;
            //使用循环来重复取水的过程
            while((hasRead=fis.read(b))>0){
                System.out.println(">>>>>>>>>>>>>>>>"+hasRead);
                //取出竹筒中的水滴(字节),将字节数组转换成字符串进行输出
                System.out.print(new String(b,0,hasRead));
            }
        }catch (IOException e){
            e.printStackTrace();
        }finally {
            fis.close();
        }
    }
FileWriter

BufferedInputStream

BufferedOutputStream
    
    public void getBufferedStream() throws Exception{
        //创建文件夹
        File file = new File(MAKEDIR_TEXT_PATH);
        if (!file.exists()) {
            log.info("文件不存在!!!");
            file.mkdir();
            log.info("文件新建完成!!!");
        }

        FileInputStream fis=null;
        FileOutputStream fos=null;
        BufferedInputStream bis=null;
        BufferedOutputStream bos=null;
        try {
            //创建字节输入流
            fis=new FileInputStream(TEXT_PATH);
            //创建字节输出流
            fos=new FileOutputStream(TEXT_PATH_NEW);
            //创建字节缓存输入流
            bis=new BufferedInputStream(fis);
            //创建字节缓存输出流
            bos=new BufferedOutputStream(fos);

            byte[] b=new byte[1024];
            int hasRead=0;
            //循环从缓存流中读取数据
            while((hasRead=bis.read(b))>0){
                //向缓存流中写入数据,读取多少写入多少
                bos.write(b,0,hasRead);
            }
        }catch (IOException e){
            e.printStackTrace();
        }finally {
            //关闭最上层的流即可
            bis.close();
            bos.close();
        }
    }
ZipOutputStream压缩包
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.IOUtils;

import java.io.*;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
    
    
    private void zip(String zipPath,String filePath) throws Exception{
        ZipOutputStream out = null;
        try {
            //压缩流
            out = new ZipOutputStream(new FileOutputStream(zipPath));
            //File流
            File inputFile = new File(filePath);
            //初始文件夹目录
            String dir = "";
            zipRecursion(out, inputFile, dir); // 调用方法
            System.out.println("压缩中…"); // 输出信息
        } catch (Exception e) {
            log.error("导出异常",e);
        } finally {
            out.close(); // 将流关闭
        }
    }

    
    public  void zipRecursion( ZipOutputStream zip, File file, String dir ) throws Exception {
        //如果当前的是文件夹,则进行进一步处理
        if (file.isDirectory()) {
            //得到文件列表信息
            File[] fileArray = file.listFiles();
            if (fileArray == null) {
                return;
            }
            //将文件夹添加到下一级打包目录
            zip.putNextEntry(new ZipEntry(dir + "/"));
            dir = dir.length() == 0 ? "" : dir + "/";
            //递归将文件夹中的文件打包
            for (File fi : fileArray) {
                zipRecursion(zip, fi, dir + fi.getName());
            }
        } else {
            //当前的是文件,打包处理
            //文件输入流
            BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file));
            ZipEntry entry = new ZipEntry(dir);
            zip.putNextEntry(entry);
            zip.write(FileUtils.readFileToByteArray(file));
            IOUtils.closeQuietly(bis);
            zip.flush();
            zip.closeEntry();
        }
    }
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/446237.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号