文章目录
一、引入
假设我们现在在玩拼图小游戏,假设游戏有一个保存拼图进度的功能到txt文件中,那该多好,这样下次在玩的时候就不需要重头开始玩了。
想要实现这个功能,我们需要学习两个知识:1、txt文本文件保存在哪里;2、数据如何进行传输,也就是如何保存到文件中。
在计算机中,文件保存的位置,也叫作 路径
,在Java中会用 File类
进行表示。
而数据的传输就需要用到 IO流
。
二、路径
路径分为两种:相对路径和绝对路径。
相对路径是不带盘符的,它是相对于当前项目而言的。
绝对路径是带盘符的。
三、File类
File对象
就表示一个路径,这个路径可以是文件的路径、也可以是文件夹的路径。
这个路径可以是存在的,也可以是不存在的。
学习一个类,我们需要知道如何创建它的对象,File类常见的方法有三个。
-
public File(String pathname)
:根据文件路径创建文件对象 -
public File(String parent, String child)
:根据父路径名字符串和子路径名字符串创建文件对象(拼接) -
public File(File parent, String child)
:根据父路径对应文件对象和子路径名字符串创建文件对象(拼接)
四、public File(String pathname)
根据文件路径创建文件对象:说白了就是:根据字符串表示的路径,变成 File对象
。
其中路径可以写绝对路径,也可以写相对路径,相对路径是相对于当前项目而言的,需要加上模块名。
String str = "C:\\Users\\alienware\\Desktop\\a.txt";
File f1 = new File(str);
System.out.println(f1); // C:\Users\alienware\Desktop\a.txt
那么为什么要将一个字符串表示的路径变成 File对象
?
其实很简单,变成 File对象
就是为了使用里面的方法,例如 delete()
,可以将这个文件删除。
如果你仅仅只是一个字符串表示的,在Java的眼中,它仅仅是一个字符串而已,它不能跟本地的文件产生关联。
但一旦创建了 File对象
,在Java眼中就不是一个字符串了,而是一个真实的路径,这个路径就表示桌面上的 a.txt
。
五、public File(String parent, String child)
根据父路径名字符串
和子路径名字符串
创建文件对象。
父路径:全称叫 父级路径
子路径:全称叫 子级路径
以 C:\Users\alienware\Desktop\a.txt
路径为例,父路径:去掉自己,剩下来的所有,即 C:\Users\alienware\Desktop
。
剩下来的 a.txt
就是子级路径。
第二个构造的目的就是将 父级路径
与 子级路径
进行拼接。
String parent = "C:\\Users\\alienware\\Desktop";
String child = "a.txt";
File f2 = new File(parent,child);
System.out.println(f2); // C:\Users\alienware\Desktop\a.txt
如果你不想用这种方式,你也可以自己去拼接。
PS:在Java中 \
叫做转义字符,因此如果想让它变成路径分隔符,需要将它变成两个 \
,即 \\
File f3 = new File(parent + "\\" + child);
System.out.println(f3);// C:\Users\alienware\Desktop\a.txt
但是在以后我们一般不会自己拼接,而是使用Java里面的构造方法来帮我们拼接。
因为在以后我们写完的代码是不一定运行在 Windows操作系统
里面的,在 Windows操作系统
中,它的路径分隔符是 \(反斜线)
,但是在以后还会学习 Linux操作系统
,在这个操作系统里面路径分隔符是 /(正斜线)
。
因此如果你是自己拼接的话,这个代码是死的。而Java底层会先获取你的操作系统,根据不同的操作系统它会用不同的路径分隔符。
因此如果以后涉及到路径的拼接,还是建议使用构造方法稳妥一些。
六、public File(File parent, String child)
第三个其实是跟第二个一样的,只不过它里面的类型不一样:父级路径是 File
,子级路径是 String
。
File parent2 = new File("C:\\Users\\alienware\\Desktop");
String child2 = "a.txt";
File f4 = new File(parent2,child2);
System.out.println(f4); // C:\Users\alienware\Desktop\a.txt
七、总结
1、File
表示什么?
File对象
表示路径,可以是文件的路径、也可以是文件夹的路径。
这个路径可以是存在的,也可以是不存在的。
2、绝对路径和相对路径是什么意思?
绝对路径是带盘符的。
相对路径是不带盘符的,默认到当前项目下找。
3、File三种构造方法的作用?
变成 File对象
的目的就是为了使用里面的方法
-
public File(String pathname)
:根据文件路径创建文件对象 -
public File(String parent, String child)
:根据父路径名字符串和子路径名字符串创建文件对象(拼接) -
public File(File parent, String child)
:根据父路径对应文件对象和子路径名字符串创建文件对象(拼接)
那么为什么要将一个字符串表示的路径变成 File对象
?
其实很简单,变成 File对象
就是为了使用里面的方法,例如 delete()
,可以将这个文件删除。
如果你仅仅只是一个字符串表示的,在Java的眼中,它仅仅是一个字符串而已,它不能跟本地的文件产生关联。
但一旦创建了 File对象
,在Java眼中就不是一个字符串了,而是一个真实的路径,这个路径就表示桌面上的 a.txt
。