前言
近期发现自己IO流掌握的不够熟练,遂跟着慕课的一套课花了半天时间系统练了一遍手。整理笔记和代码如下,也参杂了自己的理解。课程链接
代码按照章节上传到了我的GitHUb上:

脑图概览(简要):

注:每章内容前都有本章的脑图,方便复习,也可根据需要查看内容。
第1章 文件的编码

文本文件就是字节序列,可以是任意编码的字节序列。
所以一切从文件的编码说起。
| utf-8 | 中文3个字节 英文1字节 |
|---|---|
| gbk | 中文2个字节 英文1字节 |
| utf-16be | 中文2个字节 英文2字节 |
程序验证:
String s = "家铭ABC";
//项目默认utf-8,中文占用3个字节
byte[] bytes1 = s.getBytes("utf-8");
for (byte b : bytes1) {
//把字节(转换成了int)以16进制的方式显示
System.out.print(Integer.toHexString(b & 0xff) + " ");
}
System.out.println();
//gbk编码中文占用2个字节,英文占用1个字节
byte[] gbkBytes = s.getBytes("gbk");
for (byte gbkByte : gbkBytes) {
System.out.print(Integer.toHexString(gbkByte & 0xff) + " ");
}
System.out.println();
//java是双字节编码 utf-16be
byte[] javaBytes = s.getBytes("utf-16be");
//utf-16be 中文占用2个字节,英文占用2个字节
for (byte javaByte : javaBytes) {
System.out.print(Integer.toHexString(javaByte & 0xff) + " ");
}
System.out.println();
输出结果如下:

当你的字节序列是某种编码时,这个时候想把字节序列变成字符串。 也需要用这种编码方式,否则会出现乱码。
第2章 File类的使用

2-1 File类常用API介绍
File类只用于表示文件(目录)的信息(名称、大小等),不能用于文件内容的访问。
创建文件
File file = new File("E:\\Jeremy");
//路径中用双正斜(需要转义)或者单反斜File file2 = new File("E:"+File.separator+"Jeremy");
// 建议这样使用,∵windows和linux系统通用File file3 = new File("E:"+File.separator+"Jeremy", "日记.txt");
文件操作
- file.isDirectory();
- file.exists();
- file.createNewFile();
- file.mkdir();
- file.delete();
- file.isFile() //是否是一个文件
输出路径
- System.out.println(file); // file.toString() 的内容
- file.getAbsoluteFile(); //file绝对路径
- file.getName(); //file的名字
- file.getParent(); //file父目录的名字
- file.getParentFile().getAbsoluteFile(); //file父目录绝对路径
2-2 遍历目录
- String[] fileNames = dir.list(); //返回的是直接子目录名称的字符串数组
- File[] files = dir.listFiles(); //返回直接子目录文件的抽象
- 如果要遍历子目录下的目录就需要构造成File对象做递归操作
/*
* 列出指定目录下(包括其子目录)的所有文件
*/
public static void listDirectory(File dir) throws IOException {
if (!dir.exists()) {
throw new IllegalArgumentException("目录:" + dir + "不存在.");
}
if (!dir.isDirectory()) {
throw

本文详细介绍了Java中的IO流,包括File类的使用、RandomAccessFile、字节流与字符流的各类实现及其缓冲操作,以及对象的序列化和反序列化。重点讲解了字节流的FileInputStream、BufferedInputStream和DataInputStream,字符流的FileReader、BufferedReader,以及如何处理文件编码和提高IO性能。
最低0.47元/天 解锁文章
916

被折叠的 条评论
为什么被折叠?



