IO、存储、硬盘、文件系统相关常识
硬件体系存储
各个存储访问速度的一个直观感受
文件系统(FileSystem)统一管理文件
我们看到的文件的基本知识
1.文件被以树形结构(数据结构学过的树,但不是二叉树)进行管理,文件都是树上的结点(node)
2.文件可以大体分成两大类:
(1)存储数据的文件 —— 普通文件
(2)管理树形结构组织数据的文件 —— 目录/文件夹(directory/dir)
3.这颗文件数只是一个逻辑结构,而不是硬盘上的物理结构
绝对路径与相对路径
1.绝对路径:从一棵树的根节点出发描述的路径
2.相对路径:从我们所在的当前位置出发,描述的路径
关于".“和”…"的用法
“.” :表示当前目录
“…” :表示回到上一级目录
当前目录:进程得启动目录,
路径得描述:
绝对路径:\ : 路径分隔符
window:D:\ files \ a.txt 根盘符 : \ 文件名 \ 文件.后缀名
linux:/ mac: D: / 文件夹 / 文件名
相对路径:进程启动时的目录
File类中的常见属性,构造方法和方法
import java.io.File;
import java.io.IOException;
public class Main {
public static void main(String[] args) throws IOException {
File file = new File("hello-world.txt"); // 要求该文件不存在,才能看到相同
的现象
System.out.println(file.exists());
System.out.println(file.isDirectory());
System.out.println(file.isFile());
System.out.println(file.createNewFile());
System.out.println(file.exists());
System.out.println(file.isDirectory());
System.out.println(file.isFile());
System.out.println(file.createNewFile());
}
}
普通文件删除
import java.io.File;
import java.io.IOException;
public class Main {
public static void main(String[] args) throws IOException {
File file = new File("some-file.txt"); // 要求该文件不存在,才能看到相同的现象
System.out.println(file.exists());
System.out.println(file.createNewFile());
System.out.println(file.exists());
System.out.println(file.delete());
System.out.println(file.exists());
}
}
文件内容的读写 —— 数据流
InputStream方法
InputStream 只是一个抽象类,要使用还需要具体的实现类。关于 InputStream 的实现类有很多,基本
可以认为不同的输入设备都可以对应一个 InputStream 类,我们现在只关心从文件中读取,所以使用
FileInputStream
public class Demo3 {
public static void main(String[] args) throws IOException {
try (InputStream is = new FileInputStream("E:\\qqfile\\2937820012\\FileRecv\\2022-06-27-2022火箭班-IO\\IO\\src\\hello.txt")) {
byte[] buf = new byte[1024];
int len; while (true) {
len = is.read(buf);
if (len == -1) {
// 代表文件已经全部读完
break; }
for (int i = 0; i < len; i++) {
System.out.printf("%c", buf[i]);
}
}
}
}
}
OutputStream方法
OutputStream 同样只是一个抽象类,要使用还需要具体的实现类。我们现在还是只关心写入文件中,
所以使用 FileOutputStream
利用 OutputStreamWriter 进行字符写入
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
try (OutputStream os = new FileOutputStream("output.txt")) {
os.write('H');
os.write('e');
os.write('l');
os.write('l');
os.write('o');
// 不要忘记 flush
os.flush();
}
}
}
os.write('l');
os.write('l');
os.write('o');
// 不要忘记 flush
os.flush();
}
}
}