目录
一、File
1.基础知识
1.文件(file)
(1)包含数据内容本身和文件的头信息(文件名、修改时间、文件大小等)
(2)文件系统结构:多子树
2.路径分类
- 绝对路径:从根节点到叶子节点的整个路径(Windows是从各个磁盘开始的)
- 相对路径:从任意一个节点出发,到目的节点经过的路径(没有带盘符号的路径,默认在根目录下)
3.文件划分
- 文本类型:本质上也是基于二进制来保存数据,是使用了一种编码格式保存的文本(保存和打开是要使用相同的编码格式,否则就是乱码)
- 二进制类型:图片、音乐、视频文件等
4.构造方法
2.常用的方法 ![](https://img-blog.csdnimg.cn/5ac149c484f94cb89e603000b8bb9971.png)
1.创建文件:createNewFile()
createNewFile() 当且仅当具有该名称的文件尚不存在时,原子地创建一个由该抽象路径名命名的新的空文件。 |
package file;
import java.io.File;
import java.io.IOException;
public class 创建 {
public static void main(String[] args) throws IOException {
File file = new File("E:/启迪/1/1.txt");
System.out.println(file.createNewFile());
}
}
运行前:
运行后:
2.获取文件信息
将此抽象路径名转换为路径名字符串 |
getName() 返回由此抽象路径名表示的文件或目录的名称。 |
package file;
import java.io.File;
public class 创建 {
public static void main(String[] args) {
File file = new File("E:/启迪/1/1.txt");
System.out.println(file.getName());
System.out.println(file.getPath());
}
}
3.创建目录
mkdirs() 创建由此抽象路径名命名的目录,包括任何必需但不存在的父目录。 |
mkdirs() 创建由此抽象路径名命名的目录,包括任何必需但不存在的父目录。 |
package file;
import java.io.File;
public class 创建 {
public static void main(String[] args) {
//创建一级目录
File f = new File("E:/TMP/1");
f.mkdir();
//创建多级目录
File f2 = new File("E:/TMP/2/3/4");
f2.mkdirs();
}
}
4.返回文件信息
lastModified() 返回此抽象路径名表示的文件上次修改的时间。 |
length() 返回由此抽象路径名表示的文件的长度。 |
listFiles() 返回一个抽象路径名数组,表示由该抽象路径名表示的目录中的文件。 |
package file;
import java.io.File;
public class 创建 {
public static void main(String[] args) {
File file = new File("E:/启迪/1/2.txt");
System.out.println(file.lastModified());
System.out.println(file.length());
System.out.println(file.listFiles());
}
}
5.判断文件信息
exists() 测试此抽象路径名表示的文件或目录是否存在。 |
isDirectory() 测试此抽象路径名表示的文件是否为目录。 |
isFile() 测试此抽象路径名表示的文件是否为普通文件。 |
package file;
import java.io.File;
public class 创建 {
public static void main(String[] args) {
File file = new File("E:/启迪/1/1.txt");
System.out.println(file.exists());
System.out.println(file.isFile());
System.out.println(file.isDirectory());
}
}
6.文件重命名
renameTo(File dest) 重命名由此抽象路径名表示的文件。 |
package file;
import java.io.File;
public class 创建 {
public static void main(String[] args) {
File file = new File("E:/启迪/1/1.txt");
file.renameTo(new File("E:/启迪/1/1_rename.txt"));
}
}
运行前:
运行后:
7.删除文件/目录
package file;
import java.io.File;
public class 创建 {
public static void main(String[] args) {
File file = new File("E:/启迪/1/1_rename.txt");
System.out.println(file.delete());
}
}
二、InputStream
InputStream
只是一个抽象类,要使用还需要具体的实现类。关于
InputStream
的实现类有很多,基本可以认为不同的输入设备都可以对应一个 InputStream
类,我们现在只关心从文件中读取,所以使用
FileInputStream
FileInputStream
1.构造方法
2.常用的方法
read() 从该输入流读取一个字节的数据。 |
read(byte[] b) 从该输入流读取最多 |
3.文件读取
package file;
import java.io.FileInputStream;
import java.io.IOException;
public class input {
public static void main(String[] args) throws IOException {
FileInputStream fileInputStream = new FileInputStream("E:/启迪/1/1.txt");
byte[] bytes = new byte[fileInputStream.available()];
int b;
for(int i = 0; (b = fileInputStream.read()) != -1; i++){
bytes[i] = (byte) b;
}
System.out.println(new String(bytes, "GBK"));
}
}
三、OutputStream
OutputStream
同样只是一个抽象类,要使用还需要具体的实现类。我们现在还是只关心写入文件中,所以使用 FileOutputStream
FileOutputStream
1.构造方法
2.常用的方法
read() 从该输入流读取一个字节的数据。 |
read(byte[] b) 从该输入流读取最多 |
3.文件字符流写
package file;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
public class input {
public static void main(String[] args) throws IOException {
FileOutputStream fileOutputStream = new FileOutputStream("E:/启迪/1/1.txt");
OutputStreamWriter outputStreamWriter = new OutputStreamWriter(fileOutputStream, "GBK");
PrintWriter printWriter = new PrintWriter(outputStreamWriter);
printWriter.println("哈哈");
printWriter.println("学习");
printWriter.println("我身高1.5");
printWriter.println("会做烧饼");
printWriter.println("喝药贼快");
printWriter.flush();
printWriter.close();
}
}
运行后: