路径分为绝对路径和相对路径。
相对路径肯定是相对谁来说的,一般是一个文件相对于另外一个文件而言的路径。
下面是一个例子,比如index.htm如何找到photo.jpg呢?
c:/website/web/index.htm
c:/website/img/photo.jpg
所以在index.htm中使用绝对路径的话就是../img/photo.jpg。
./表示当前文件所在的目录。也可以省略不写。
../表示当前文件所在目录的父目录,就是上一级目录,在c:/website/web/index.htm中就是c:/website,再和相对路径进行拼接就是绝对路径了。
在下面这个代码中aaa其实是./aaa,也就是File1所在的目录按说应该是D:\JavaWorkspace\File\src\com\liu,但是在IDEA中却不是这样,是相对于模块来说的,即./所表示的是D:\JavaWorkspace\File。
public class File1 {
public static void main(String[] args) throws IOException {
File file = new File("aaa");
file.mkdirs();
}
IDEA目录结构(从高到低):Project(项目)→Module(模块)→Package(包)→Java文件
IDEA默认当前路径为Project的路径。
IDEA中的项目和模块的可以参考下面这张图:
关于IDEA中写相对路径时,报错(系统找不到指定的路径)_idea中相对路径找不到文件-CSDN博客
将字符串转换为其他类的对象,比如File类,还有常用的时间类。
如何转换,有3个构造方法。
3个构造方法的参数分别是(路径)、(父级路径,子级路径)、(父级路径的File对象,子级路径)。
细节:在创建的时候是不关心路径存不存在的。
以及常用方法:
(1)获取与File对象有关的有一些信息。
所表示的路径是否存在?exist。所表示的路径是文件夹还是文件?如果所表示的路径根本不存在,则直接返回false。本来想查看源码验证一下,但是看不懂,算了。
length():文件的字节大小,不能获取文件夹的大小。
getAbsolutePath:获取绝对路径。
getPath:返回定义时的路径。
getName:要时刻注意当前File对象所表示的路径是文件还是文件夹。如果是文件夹则返回文件夹的名字,如果是文件,则返回文件名+后缀名,如a.txt。
(2)对文件或文件夹进行操作:增删查
关于createNewFile()方法:它表示创建一个空的文件,但是却没有参数,那文件的名字如何确定呢?是默认提供的吗?好像也不是。
具体步骤应该是这样的,即当前File对象所表示的路径是否是文件?
在此方法中一般都会把文件夹看作文件,比如\bbb,会看作一个没有后缀的bbb文件,而不是文件夹,谁说文件一定要有后缀名呢。所以createNewFile()方法只能创建一个文件,不能创建文件夹。
当前File对象所表示的路径是否存在?如果不存在就创建一个,存在则不创建并返回false。
如果当前路径的父级路径并不存在,运行时会报IOException异常。
mkdir():创建文件夹。
有一个问题:Windows操作系统中,路径是唯一的。比如一个文件夹下有一个文件为bbb,此时想创建一个bbb的文件夹是不会成功的,因为它们两个的路径都是\bbb,这在Windows中是不被允许的。因此这个问题也就延伸到了Java中。
而且mkdir()这个方法只能创建单级文件夹,不能创建多级文件夹,比如想在已有的aaa文件夹下创建还没存在的ccc\ddd就是错的。
但是Java中肯定也提供了相应的方法,比如mkdirs(),就可以创建多级文件夹。但是mkdirs()也是可以创建单级文件夹的,那mkdir()这个方法岂不是没有存在的必要了,答案是的,那为什么还有学呢?因为mkdirs()这个方法的底层其实用到了mkdir()。
还有一个删除的方法delete,首先分删除的是文件还是文件夹,如果是文件,不管空不空,直接删,如果是文件夹则需要考虑文件夹下是否有内容,是空文件夹则删除成功,有内容的文件夹此方法删不了。
并且此方法删除的东西是不经过电脑的回收站的。
遍历文件夹listFiles(),返回结果是一个数组,数组中的内容是路径。
Array.toString()方法,将数组以字符串的形式进行输出。这个方法的底层跟之前写的一模一样。