1.文件系统
操作系统使用文件系统来管理文件,每个文件都有一个路径,用来描述文件的位置。文件路径分为绝对路径和相对路径:
绝对路径是从盘符出发的路径,举个例子:"D:/learn/test.txt",这个路径从D盘的盘符出发,那么这是一个绝对路径;
相对路径需要先定好基准目录,用"."表示当前目录,".."表示上一级目录,例如:定义基准目录为"D:/learn",可以用"."表示,"./text.txt"就是一个相对路径,实际就表示"D:/learn/test.txt";"D:/"可以用".."表示,"../test.txt"实际就表示"D:/test.txt";
文件的分类:文件分为文本文件和二进制文件。
2.文件系统的操作
文件系统可以进行创建文件,获取文件路径,删除文件,创建目录,重命名等操作。
1.获取文件路径/名称等相关操作(get)
- getParent():String:返回File对象的父目录文件路径
- getName():String:返回File对象的纯文件名称
- getPath():String:返回File对象的文件路径
- getAbsolutePath():String:返回File对象的绝对路径
- getCanonicalPath():String:返回File对象的修饰过的绝对路径
代码如下:
运行结果:
2.判断文件是否存在,是文件还是路径
- exists():boolean
- isDrectory():boolean
- isFile():boolean
- createNewFile():boolean
代码如下:
运行结果:
当文件不存在时,判断file是文件还是路径,返回结果都是false;
当文件存在时,可以判断file是文件还是路径;
当文件存在时,再创建相同的文件时,不会创建文件,并且返回false;
3.普通文件的删除
- delete():boolean
- deleteOnExit():void
代码如下:
运行结果:
再演示一下deleteOnExit,首先文件存在,如下图:
代码:
运行结果及检查文件是否存在:
可以看到,程序运行时,调用deleteOnExit不会删除文件,程序运行结束后,才删掉文件。
4.目录的创建
- mkdir():boolean
- mkdirs():boolean
代码如下:
运行结果:
当目录不存在时,判断file是文件还是目录,结果都会返回false;
当目录存在时,可以判断file是文件还是路径;
当目录存在时,再创建相同的目录,不会创建,返回false;
再演示创建多层目录:
代码:
运行结果:
创建多层目录时,如果中间目录不存在,比如上面的test2和test3,那么就无法使用mkdir创建目录,要创建多层目录,需要使用mkdirs创建。
5.文件重命名
- renameTo(File):boolean
代码:
运行结果:
上面目录test2被重命名成test5,重命名操作适用于目录和文件。
6.查看文件目录
- list():String[]
- listFiles():File[]
代码如下:
运行结果:
代码如下:
运行结果:
3.文件内容的读写
1.InputStream
- read():int
- read(byte[] b):int
- read(byte[] b, int off, int len):int
- close():void
InputStream是一个抽象类,要使用还需要具体的实现类。读取文件内容可以使用FileInputStream.
代码如下:
运行结果:
代码如下:
运行结果:
如果文件是文本文件,使用Scanner更加方便。
代码如下:
运行结果:
2.OutputStream
- write(int b):void
- write(byte[] b):void
- write(byte[] b, int off, int len):void
- close():void
- flush():void
OutputStream同样也是一个抽象类,要使用还需要具体实现的类,比如写文件,可以使用FileOutputStream.
代码如下:
运行结果:
代码如下:
运行结果:
如果想在文件中追加内容,还可以通过设置参数的方式,类如:
运行结果:
也可以使用PrintWriter类,处理OutputStream,完成输出。
代码如下:
运行结果: