文件分为狭义上的文件和广义上的文件
狭义上的文件:
就是像硬盘这种可以持久化储存的I/O设备,文件夹等等
广义上的文件:
操作系统将网卡,键盘等等,都抽象成了文件。方便使用
文件的结构是一种树形结构来组织的,是N叉树
目录就是将一个个文件夹组织起来
分为绝对路径和相对路径
绝对路径
相对路径
相对路径的表示是./IDEA/InteIIiJ IDEA …
用./来表示相对路径。
翻译一下就是输入操作和输出操作,是一种流(Stream)
有两种输入流和输出流。分别问字节流和字符流。
字节流:
输入表示 InputStream ,输出表示OutputStream 他们两个都是抽象类,所有要实例化的话要使用已经实现了他们的类
分别为FileInputStream和FileOutputStream。
import java.io.*;
//读一个文件 用字节流读文件 打开 读文件 关闭
public class Demo7 {
public static void main(String[] args) throws IOException {
//打开文件
InputStream inputStream = new FileInputStream("./test.txt");//InputStream是抽象类 不能实例化
while(true){
int tmp = inputStream.read();//读文件
if(tmp == -1){
//为-1说明读完了 读文件读出的是字节码
break;
}
System.out.println(tmp);
}
inputStream.close();//文件关闭
}
}
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
//写文件 字节流写文件
public class Demo8 {
public static void main(String[] args) throws IOException {
OutputStream outputStream = new FileOutputStream("./test.txt");
//使用outputStream写文件的时候 打开文件成功后 会把文件原来的内容清空
outputStream.write(97);
outputStream.write(98);
outputStream.write(99);
outputStream.close();
}
}
记得处理异常
字符流:
输入表示 Reader,输出表示Writer,
使用是也是 FileReader和FileWriter。
import java.io.FileReader;
import java.io.IOException;
import java.io.Reader;
//用字符流读文件
public class Demo9 {
public static void main(String[] args) throws IOException {
Reader reader = new FileReader("./test.txt");
while(true){
int n = reader.read();
if(n == -1){
break;
}
System.out.println((char)n);
}
reader.close();
}
}
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;
//字符流 写文件
public class Demo10 {
public static void main(String[] args) throws IOException {
Writer writer = new FileWriter("./test.txt");
writer.write("哈哈哈");
writer.close();
}
}
存储分为了内存和外存
文件保存在外存中。
内存就是内存条,外存是硬盘。
内存的存储空间<外存的存储空间
内存的读写速度>外存的读写速度