硬盘的特点
1.硬盘存储空间大,内存存储空间小
2.硬盘访问速度慢,内存访问速度快
3.硬盘成本低,内存成本高
4.硬盘上的数据断电不会丢失,内存数据断电会丢失(可持久化存储)
文件
1.狭义的文件:存储在硬盘上的数据,以“文件”为单位,通过N叉树来组织文件(目录结构)。
2.广义的文件:操作系统要负责管理软硬件资源,通常会把这些资源都统一的抽象成“文件”进行管理。例如:操作系统把键盘抽象成文件(stdin),读这个文件就能读到用户输入的按键内容。
路径
1.绝对路径:我们知道目录是一共N叉树,树中的每个结点都可以被一条从根开始,一直到达的结点的路径所描述,而这种描述方式就被称为文件的绝对路径(absolute path)。例如:要找可以查看线程数的jconsole.exe文件的绝对路径:C:\Program Files\Java\jdk1.8.0_192\bin\jconsole.exe.其中 C:是盘符,每个\分割的部分,都是目录(/也是可以的,在其他操作系统上 \ 是不可行的,所以更推荐使用 / )
2.相对路径:首先得有一共”基准路径“也叫”工作路径“,相对路径就是以基准路径为起点,往下继续怎么走,才能到达目标的路径表示方式。像上面的例子,如果基准路径是D:此时的相对路径就是:./Program Files/Java/jdk1.8.0_192/bin/jconsole.exe. 如果基准路径是D:/Program Files/ 那相对路径就是./Java/jdk1.8.0_192/bin/jconsole.exe(./表示当前目录)
基本IO操作
文件操作是属于操作系统层面,不同操作系统提供了不同的API,JAVA作为跨平台语言,为了统一代码,JVM就把不同系统的操作文件的API进行封装,直接使用Java中的库的代码直接操作文件。
File类
1.构造方法:
创建File对象的时候,并不代表真实存在该文件。
2.File类提供的方法
1.get系列方法的作用和差异
public static void main(String[] args) throws IOException {
File f = new File("./test.txt");//通过给相对路径(或绝对路径)创建File对象,但并不代表有这个文件
System.out.println(f.getName());//返回文件名
System.out.println(f.getParent());//返回父路径名
System.out.println(f.getPath());//返回路径名
System.out.println(f.getAbsoluteFile());//返回绝对路径
System.out.println(f.getCanonicalPath());//返回路径名的规范形式
}
2.普通文件的创建-->createNewFile
public static void main(String[] args) throws IOException {
File f = new File("./test.txt");
System.out.println(f.exists());//文件或目录是否存在
System.out.println(f.isDirectory());//是否是目录
System.out.println(f.isFile());//是否是文件
System.out.println(f.createNewFile());//当且仅当具有该名称的文件尚不存在时,原子的创建一个由该抽象路径名命名的新的空文件。
System.out.println(f.exists());
System.out.println(f.isDirectory());
System.out.println(f.isFile());
System.out.println(f.createNewFile());
}
3.普通文件的删除 -->delete
public static void main(String[] args) {
File f = new File("./test.txt");
System.out.println(f.exists());
System.out.println(f.delete());//删除文件
System.out.println(f.exists());
}
此外f.deleteOnExit()是
-
-
请求在虚拟机终止时删除由此抽象路径名表示的文件或目录。即进程退出时删除文件
-
4.目录的创建 mkdir,mkdirs
public static void main(String[] args) {
File f = new File("./dir/aaa/bbb");
System.out.println(f.exists());//目录或文件是否存在
f.mkdirs();//创建多级目录,mkdir是创建一级目录
System.out.println(f.isDirectory());
System.out.println(f.isFile());
}
5.文件重命名
public static void main(String[] args) throws IOException {
File f = new File("./dir/aaa/bbb/test.txt");
f.createNewFile();//在目录下创建一个文件
File f2 = new File("./dir/aaa/bbb/test2.txt");//该路径下的文件不存在
f.renameTo(f2);//重命名由此抽象路径名表示的文件
System.out.println(f.exists());
System.out.println(f2.exists());
}