ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

java学习笔记(十二)——IO流前置(File类和字符集)

java学习笔记(十二)——IO流前置(File类和字符集)

文章目录

  • File类
    • 创建对象
    • 判断文件类型
    • 创建/删除文件
    • 遍历文件夹
    • 文件搜索(用递归实现文件的多级遍历)
  • 字符集
    • 常用字符集
    • 编码与解码

File类

创建对象

  • File对象既可以代表文件、也可以代表文件夹。
  • File封装的对象仅仅是一个路径名,这个路径可以是存在的,也允许是不存在的。

判断文件类型

创建/删除文件


注意:delete方法默认只能删除文件和空文件夹,删除后的文件不会进入回收站。

遍历文件夹

文件搜索(用递归实现文件的多级遍历)

需求:从D:盘中,搜索“QQ.exe” 这个文件,找到后直接输出其位置。
分析:

  • 先找出D:盘下的所有一级文件对象
  • 遍历全部一级文件对象,判断是否是文件
  • 如果是文件,判断是否是自己想要的
  • 如果是文件夹,需要继续进入到该文件夹,重复上述过程
public class Test4 { static void main() throws IOException { search("D:/","QQMini"); } private static void search(String path,String fileName) throws IOException { File file=new File(path); if(file==null||!file.exists()||file.isFile()){ return;//代表无法搜索 } File[] files=file.listFiles(); if(files!=null&&files.length>0){ for (File file1 : files) { if(file1.isFile()){ if(file1.getName().contains(fileName)){ System.out.println("找到了"+fileName+"位置:"+file1.getAbsoluteFile()); Runtime runtime=Runtime.getRuntime(); System.out.println(file1.getName()); System.out.println(file1.getAbsolutePath()); runtime.exec(file1.getAbsolutePath()); return; } } else{ search(file1.getPath(),fileName); } } } } }

字符集

常用字符集

  • ASCII码:英文和数字一字节
  • GBK:英文和数字一字节,汉字两字节
  • UTF-8:英文和数字一字节,汉字三字节

注意1:字符编码时使用的字符集,和解码时使用的字符集必须一致,否则会出现乱码

注意2:英文,数字一般不会乱码,因为很多字符集都兼容了ASCII编码。

编码与解码

String类下的方法:

  • byte[] getBytes​():默认编码
  • byte[] getBytes​(String charsetName):指定编码


String类的构造器:

  • String​(byte[] bytes):使用默认编码解码
  • String​(byte[] bytes, String charsetName)):指定编码解码

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进