File类
java.io.File类: 文件和文件目录路径的抽象表示形式,与平台无关
- 想要在Java程序中表示一个真实存在的文件或目录,那么必须有一个File对象,但是Java程序中的一个File对象,可能没有一个真实存在的文件或目录。
- File对象可以作为参数传递给流的构造器。
常用构造器
- public File(String pathname)
以pathname为路径创建File对象,可以是绝对路径或者相对路径,如果pathname是相对路径,则默认的当前路径在系统属性user.dir中存储。
绝对路径: 是一个固定的路径,从盘符开始
相对路径: 是相对于某个位置开始 - public File(String parent,String child)
以parent为父路径, child为子路径创建File对象。 - public File(File parent,String child)
根据一个父File对象和子文件路径创建File对象
常用方法
File 类的使用
File dir1 = new File("D:/IOTest/dir1");
if (!dir1.exists()) { // 如果D:/IOTest/dir1不存在,就创建为目录
dir1.mkdir();
}
// 创建以dir1为父目录,名为"dir2"的File对象
File dir2 = new File(dir1, "dir2");
if (!dir2.exists()) { // 如果还不存在,就创建为目录
dir2.mkdirs();
}
File dir4 = new File(dir1, "dir3/dir4");
if (!dir4.exists()) {
dir4.mkdirs();
}
// 创建以dir2为父目录,名为"test.txt"的File对象
File file = new File(dir2, "test.txt");
if (!file.exists()) { // 如果还不存在,就创建为文件
file.createNewFile();
}
Java IO原理
- I/O是Input/Output的缩写, I/O技术是非常实用的技术, 用于处理设备之间的数据传输。 如读/写文件,网络通讯等。
- 输入input: 读取外部数据(磁盘、光盘等存储设备的数据)到程序(内存)中。
- 输出output: 将程序(内存)数据输出到磁盘、光盘等存储设备中。
流的分类
- 按操作数据单位不同分为: 字节流(8 bit),字符流(16 bit)
- 按数据流的流向不同分为: 输入流,输出流
- 按流的角色的不同分为: 节点流,处理流
InputStream & Reader
InputStream 和 Reader 是所有输入流的基类。
- inputStream(典型实现: FileInputStream)
int read()
int read(byte[] b)
int read(byte[] b, int off, int len) - Reader(典型实现: FileReader)
int read()
int read(char [] c)
int read(char [] c, int off, int len)
OutputStream & Writer
void write(int b/int c);
void write(byte[] b/char[] cbuf);
void write(byte[] b/char[] buff, int off, int len);
void flush();
void close(); 需要先刷新,再关闭此流