File
概述和构造方法
1 | File类的概述 |
成员方法
1 | 创建功能 |
文件过滤器的使用栗子🌰
需求:判断E盘目录下是否有后缀名为.jpg的文件,如果有,就输出此文件名称
实现:
1 | public class FileDemo2 { |
IO流
概述和分类
1 | 概述 |
什么情况下使用哪种流呢?
如果数据所在的文件通过 windows 自带的记事本打开并能读懂里面的内容,就用字符流。其他用字节流。
如果你什么都不知道,就用字节流。
计算机如何识别是中文还是英文呢?
计算机是如何识别什么时候该把两个字节转换为一个中文呢?
在计算机中中文的存储分两个字节:- 第一个字节肯定是负数。
- 第二个字节常见的是负数,可能有正数。但是没影响。
看下面的栗子🌰:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19class Test {
public static void main(String[] args) {
String en = "ANDYOU";
byte[] en_b = en.getBytes();
System.out.print("en_b : ");
for (byte b : en_b) {
System.out.print(b + " ");
}
System.out.println("\n------------");
String zh = "爱你";
byte[] zh_b = zh.getBytes();
System.out.print("zh_b : ");
for (byte b : zh_b) {
System.out.print(b + " ");
}
}
}输出:
1
2
3en_b : 65 78 68 89 79 85
------------
zh_b : -25 -120 -79 -28 -67 -96
常用基类
1 | 字节流的抽象基类: |
字节流
1 | java.lang.Object |
字节缓冲流
1 | java.lang.Object |
字符流
1 | java.lang.Object |
字符缓冲流
1 | java.lang.Object |
注意事项
1 | 字符流操作要注意的问题 |
转换流
转换流出现的原因及思想
1 | 由于字节流操作中文不是特别方便,所以,java就提供了转换流。 |
编码表概述和常见编码表
1 | 编码表 |
转换流概述
1 | OutputStreamWriter 字符输出流 |
转换流简化
1 | 转换流的名字比较长,而我们常见的操作都是按照本地默认编码实现的,所以,为了简化我们的书写,转换流提供了对应的子类。 |
其他流
数据操作流
1 | 操作基本数据类型的类: |
内存操作流
1 | 内存操作流一般用于处理临时信息,因为临时信息不需要保存,使用后就可以删除。 |
打印流
1 | 打印流概述 |
标准输入输出流
1 | System类中的字段:in,out。 |
随机访问流
1 | RandomAccessFile概述 |
合并流
1 | SequenceInputStream类可以将多个输入流串流在一起,合并为一个输入流,因此,该流也被称为合并流。 |
序列化流
1 | 将对象写入文件,传输。。。 |
1 | 序列化操作问题 |
Properties 集合
1 | Properties:属性集合类。是一个可以和IO流相结合使用的集合类。 |
NIO
NIO其实就是新IO的意思。
JDK4出现NIO。新IO和传统的IO有相同的目的,都是用于进行输入输出的,但新IO使用了不同的方式来处理输入输出,采用内存映射文件的方式,将文件或者文件的一段区域映射到内存中,就可以像访问内存一样的来访问文件了,这种方式效率比旧IO要高很多,但是目前好多地方我们看到的还是旧IO的引用,所以我们仍以旧IO为主,知道NIO即可。
JDK7的IO改进
Path:与平台无关的路径。
Paths:包含了返回Path的静态方法。
public static Path get(URI uri):根据给定的URI来确定文件路径。
Files:操作文件的工具类。提供了大量的方法,简单了解如下方法
public static long copy(Path source, OutputStream out) :复制文件
public static Path write(Path path, Iterable<? extends CharSequence> lines, Charset cs, OpenOption… options):
把集合的数据写到文件。