[IO stream operation] Detailed explanation of File usage

  1. Use object-oriented approach to count folder size
package com.yf.cn.app.io;

import java.io.File;

/**
 *  使用面向对象: 统计文件夹的大小
 * @author 裴新
 *
 */
public class DirCount {
    
    
	//大小
	private long len;
	//文件夹路径
	private String path;
	//文件的个数
	private int fileSize;
	//文件夹的个数
	private int dirSize;
	//源
	private File src;
	public DirCount(String path) {
    
    
		this.path = path;
		this.src = new File(path);
		count(this.src);
	}	
	
	//统计大小
	private  void count(File src) {
    
    	
		//获取大小
		if(null!=src && src.exists()) {
    
    
			if(src.isFile()) {
    
      //大小
				len+=src.length();
				this.fileSize++;
			}else {
    
     //子孙级
				this.dirSize++;
				for(File s:src.listFiles()) {
    
    
						count(s);
				}
			}
		}
	}	
	
	public long getLen() {
    
    
		return len;
	}

	public int getFileSize() {
    
    
		return fileSize;
	}

	public int getDirSize() {
    
    
		return dirSize;
	}
	
	public static void main(String[] args) {
    
    
		DirCount dir = new DirCount("D:/spb11");
		System.out.println(dir.getLen()+"-->"+dir.getFileSize()+"-->"+dir.getDirSize());
		
		DirCount dir2 = new DirCount("H:/linux运维/01-第1阶段-运维基本功/day01-运维概述与Linux系统安装");
		System.out.println(dir2.getLen()+"-->"+dir2.getFileSize()+"-->"+dir2.getDirSize());

	}	


	
	
	
}

  1. File character set garbled processing method
    2.1 Encoding and decoding concepts
    Insert image description here
    2.2 Encoding
    2.3 byte reading
    Insert image description here
package com.yf.cn.app.test;

import java.io.UnsupportedEncodingException;

/**
 * @author yangfeng
 * @version 1.0
 * @date 2022-09-13 14:26
 */
public class ContentEncode {
    
    

  public static void main(String[] args) throws UnsupportedEncodingException {
    
    
    String msg = "性命生命使命a";
    byte[] bytes = msg.getBytes();//默认使用工程字符集
    System.out.println(bytes.length);

    //编码为其他字符集
    bytes = msg.getBytes("UTF-16LE");
    System.out.println(bytes.length);

    bytes = msg.getBytes("GBK");
    System.out.println(bytes.length);



  }

}

2.3 Decoding

package com.yf.cn.app.test;

import java.io.UnsupportedEncodingException;

/**
 * @author yangfeng
 * @version 1.0
 * @date 2022-09-13 14:26
 */
public class ContentDecode {
    
    

  public static void main(String[] args) throws UnsupportedEncodingException {
    
    
    String msg = "性命生命使命a";
    byte[] bytes = msg.getBytes();//默认使用工程字符集


    msg = new String(bytes);
    System.out.println(msg);
    /***
     * @describe 乱码;
     * 原因:1.字节数不够 2字符集不统一
     * @author yangfeng
     * @date 2022-09-13 14:38:52
     * @param args
     * @return
     **/
    msg = new String(bytes,0,bytes.length,"utf-8");
    System.out.println(msg);
    System.out.println("----字节数不够---");
    msg = new String(bytes,0,bytes.length-2,"utf-8");
    System.out.println(msg);

    System.out.println("----字符集不符---");
    msg = new String(bytes,0,bytes.length-2,"gbk");
    System.out.println(msg);



  }

}

  1. file copy
package com.yf.cn.app.io;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

/**
 * @author yangfeng
 * @version 1.0
 * @date 2022-09-14 14:18
 */
public class FileCopy {
    
    

  public static void main(String[] args) {
    
    
    copy("D:/images/framework.PNG","D:/images/jiagou.png");

  }


  public static  void copy(String sourcePath,String destPath){
    
    
    //源
    File src = new File(sourcePath);
    //目标文件
    File dp = new File(destPath);
    InputStream is = null;
    OutputStream os = null;
    try {
    
    
      //2.选择流
      is = new FileInputStream(src);
      os = new FileOutputStream(dp);
      byte[] bytes = new byte[1024];
      int len = -1;
      while((len=is.read(bytes))!=-1){
    
    
        //按照读出的字节大小进行写入
        os.write(bytes,0,len);
      }
      //输出流刷新
      os.flush();

    } catch (FileNotFoundException e) {
    
    
      e.printStackTrace();
    } catch (IOException e) {
    
    
      e.printStackTrace();
    }finally {
    
    
      //释放资源,分别关闭输入流和输出流,先打开的后关闭
      try {
    
    
        if(null!=os){
    
    
          os.close();
        }
      } catch (IOException e) {
    
    
        e.printStackTrace();
      }
      //释放输入流
      try {
    
    
        if(null!=is){
    
    
          is.close();
        }
      } catch (IOException e) {
    
    
        e.printStackTrace();
      }
    }

  }

}

  1. Character stream operation
    5.1 Input character stream operation
package com.yf.cn.app.io;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.Reader;

/**
 * IO 流操作步骤
 * 1.创建源
 * 2.选择流
 * 3.操作
 * 4.释放资源
 * @author yangfeng
 * @version 1.0
 * @date 2022-09-13 15:39
 */
public class FileReaderTest {
    
    

  public static void main(String[] args)  {
    
    

    File file = new File("test.txt");
    Reader reader = null;
    try {
    
    
      reader = new FileReader(file);
      char[] chars = new char[1024];
      int len = -1;
      if((len=reader.read(chars))!=-1){
    
    
        System.out.println(chars);
      }
      reader.close();
    } catch (FileNotFoundException e) {
    
    
      e.printStackTrace();
    } catch (IOException e) {
    
    
      e.printStackTrace();
    }

  }

}

5.2 Output character stream operation

package com.yf.cn.app.io;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Reader;
import java.io.Writer;

/**
 * IO 流操作步骤
 * 1.创建源
 * 2.选择流
 * 3.操作
 * 4.释放资源
 * @author yangfeng
 * @version 1.0
 * @date 2022-09-13 15:39
 */
public class FileWriterTest {
    
    

  public static void main(String[] args)  {
    
    

    File file = new File("readme.txt");
    Writer writer = null;
    try {
    
    
      writer = new FileWriter(file,true);
      String msg = "低调是一种美德";
      writer.write(msg);
      writer.flush();

    } catch (IOException e) {
    
    
      e.printStackTrace();
    }finally {
    
    
      try {
    
    
        if(null!=writer){
    
    
          writer.close();
        }
      } catch (IOException e) {
    
    
        e.printStackTrace();
      }
    }


  }

}

  1. Node flow
    6.1 Node flow definition
    Streams used directly to access data sources (files, memory, pipes), generally File and Byte The streams at the beginning are all node streams
    6.2 Architecture diagram
    Insert image description here

Guess you like

Origin blog.csdn.net/yangfenggh/article/details/126831938