zoukankan      html  css  js  c++  java
  • 对IO流的操作(文件大小,拷贝,移动,删除)

    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.FileReader;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.io.SequenceInputStream;

    class LjyFileClass {

    /*LjyFileClass工具类使用需知:

    *
    * 1.计算文件大小:long size = getFileSize(File file)
    * file:传入一个文件路径,计算文件夹中所有的文件大小,
    * 返回值是一个long类型的字节数。
    *
    *
    * 2.拷贝文件夹:getCopyFile(File filePath,File newFilePath)
    * filePath: 需要拷贝的文件路径,
    * newFilePath: 存放文件的路径
    * 使用时只需要传入要拷贝的路径和一个存放的路径就可以了。
    *
    *
    * 3.字节流拷贝图片,视频,音频等文件:getCopyFileContent(File file,File file2)
    * file: 要拷贝的文件路径
    * file2: 存放路径
    * 字节流适用于拷贝图片,视频,音频等一些不需要解码的文件,
    * 使用时只需要传入要拷贝的路径和一个存放的路径就可以了。
    *
    *
    * 4.字符流拷贝文件:getFileRead(File file , File file2)
    * file: 要拷贝的文件路径
    * file2: 存放路径
    * 字符流适用于拷贝一些需要解码操作的文件,但是不能实用字符流来拷贝图片,音频,
    * 视频等。使用字符流可能会导致文件丢失。而不能正常打开。
    *
    *
    * 5.MergeFile(File file , File file2,File file3):合并两个文件
    * file: 需要合并的文件路径
    * file2: 需要合并的文件路径
    * file3: 合并之后的文件路径
    *
    * 该方法可以实现两个文件的拼接,并且返回一个新的文件。
    *
    *
    * 6.MoveFileToNewPath(File file, File file2):把目标文件移动到指定的路径下
    * file: 需要移动的文件路径
    * file2: 接收移动过来的文件路径
    * 该方法可以把一个文件夹移动到指定的路径下,并且删除原来的文件。
    *
    *
    * 7.getDeleteFile(File file):删除整个文件夹
    * file:要删除的文件夹路径
    * 该方法可以实现整个文件夹的删除工作。
    *
    *
    *
    * 方法摘要:
    * 1.getFileSize(File file) 返回文件大小
    * 2.getCopyFile(File filePath,File newFilePath) 拷贝文件夹
    * 3.getCopyFileContent(File file,File file2) 字节流拷贝图片,视频,音频等文件
    * 4.getFileRead(File file , File file2) 字符流拷贝文件
    * 5.MergeFile(File file , File file2,File file3) 合并两个文件
    * 6.MoveFileToNewPath(File file, File file2) 把目标文件移动到指定的路径下
    * 7.getDeleteFile(File file) 删除整个文件夹
    */

    //获取文件大小,只需传一个文件路径的实参,返回值是文件大小(long类型),返回值只表示文件的字节大小。
    public long getFileSize(File file){
    long fileSize = 0;
    File[] files = file.listFiles();

    if (file.isFile()) {
      return file.length();
    }
    if (file != null) {
      for (File file2 : files) {
        fileSize += getFileSize(file2);
      }
    }
    return fileSize;
    }


    //把一个文件夹拷贝到另一个文件夹里
    public void getCopyFile(File filePath,File newFilePath) throws IOException{
    File[] files = filePath.listFiles();
    File tempFile = null;
    if (!(newFilePath.isDirectory())) {
      newFilePath.mkdir();
    }
    if (filePath != null) {
      for (File file : files) {
        if (file.isDirectory()) {
          String string = file.getName();
          tempFile = new File(newFilePath+"\"+string);
          tempFile.mkdir();
          getCopyFile(file, tempFile);

        }else if (file.isFile()) {
          String string = file.getName();
          tempFile = new File(newFilePath+"\"+string);
          tempFile.createNewFile();
          getCopyFileContent(file,tempFile);
        }
      }
    }

    }

    //拷贝图片,视频,音频等不需解码的文件
    public void getCopyFileContent(File file,File file2) throws IOException{

    FileInputStream inputStream = new FileInputStream(file);
    FileOutputStream outputStream = new FileOutputStream(file2);

    byte[] b = new byte[1024];
    int count = 0;
    while ((count = inputStream.read(b)) != -1) {
      outputStream.write(b,0,count);
    }
    inputStream.close();
    outputStream.close();
    }

    //用字符流来拷贝,当用此方法来拷贝图片,视频,音频等文件时,这些文件将不能被打开。
    public void getFileRead(File file , File file2) throws IOException {
    FileReader fileReader = new FileReader(file);
    FileWriter fileWriter = new FileWriter(file2);
    char[] b = new char[1024];
    int count = 0;
    while ((count = fileReader.read(b)) != -1) {
      fileWriter.write(b,0,count);
    }

    fileWriter.close();
    fileReader.close();
    }

    //合并文件
    public void MergeFile(File file , File file2, File file3) throws IOException {

    FileInputStream fileInputStream = new FileInputStream(file);
    FileInputStream fileInputStream2 = new FileInputStream(file2);
    FileOutputStream outputStream = new FileOutputStream(file3);
    SequenceInputStream inputStream = new SequenceInputStream(fileInputStream, fileInputStream2);

    byte[] b = new byte[1024];
    while (inputStream.read(b) != -1) {
      outputStream.write(b);
    }
    outputStream.close();
    inputStream.close();
    }

    //把文件移动到新的路径下 file:要移动的路径 file2:接收移动的路径
    public void MoveFileToNewPath(File file, File file2) throws IOException{
    File file3 = new File(file2.getPath() + "\" + file.getName());
    //把文件复制到指定的路径上
    getCopyFile(file, file3);
    //清空原来的文件夹并且删除
    getDeleteFile(file);
    }

    //递归删除整个文件夹
    public void getDeleteFile(File file){

    File[] files = file.listFiles();
    if (file != null) {
      for (File file2 : files) {
        if (file2.isDirectory()) {
          getDeleteFile(file2);
        }else {
          file2.delete();
        }
      }
    }
    file.delete();
    }


    //剪切文件
    public void ShearFile() {

    }

    }

    public class demo {

    /**
    * 1.创建文件
    * 2.创建文件夹
    * 3.查找以结尾
    * 4.判断是否是一个文件
    * 5.判断是否是一个文件夹
    * 6.
    *
    */
    public static void main(String[] args) throws IOException {
    LjyFileClass ljyFileClass = new LjyFileClass();

    // File file = new File("C:\Users\PC-LUO\Desktop\新建文件夹\1.jpg");
    // File file2 = new File("C:\Users\PC-LUO\Desktop\新建文件夹\新建文件夹\1.jpg");
    //
    // ljyFileClass.getCopyFileContent(file, file2);

    File file3 = new File("C:\1111");
    file3.mkdir();
    }

    }

  • 相关阅读:
    C语言I博客作业06
    C语言I博客作业07
    C语言I博客作业03
    oracle 创建用户并指定表空间
    Oracle 给用户赋予dblink权限,创建dblink
    IDEA 2020.2 破解、激活
    nginx 里的常用变量
    nginx 跨域问题解决
    elasticsearch (一)
    kubenetes 安装部署
  • 原文地址:https://www.cnblogs.com/12kk/p/7560202.html
Copyright © 2011-2022 走看看