JAVA I/O小结(一)——File类
什么是I/O流?
答:对任何程序设计语言来说,输入输出(Input/Output)系统都是非常核心的功能。
-
输入(Input):就是将外部的数据读取到程序当中(以程序为基准,核心含义是“读”);如读取硬盘的文件到程序;读取网络上某个位置内容到程序;读取数据库系统的数据到程序;读取某些硬件系统到程序。
-
输出(Output):在处理数据时,需要将数据写到外部(以程序为基准,核心含义是“写”);如将数据写到硬盘中;将数据写到数据库系统中;将数据写到某些硬件系统中。
-
java.io包为我们提供了相关的API,实现了所有外部系统的输入输出操作。
文章目录
前言
File能新建、删除、重命名文件和目录,但File不能访问文件内容本身。如果需要访问文件内容本身,则需要使用输入/输出流。
File对象可以作为参数传递给流的构造函数
File类的常见构造方法:
public File(String name)
以name为路径创建File对象,可以是绝对路径或者相对路径,如果name是相对路径,则默认的当前路径在系统属性user.dir中存储。
public File(String parent,String child)
以parent为父路径,child为子路径创建File对象。
File的静态属性string separator存储了当前系统的路径分隔符。
在UNIX中,此字段为 ’ / ’ ,在Windows中,为 ’ \\ ’ 。
创建文件test123与456两个文本文件在代码根目录中,目的是为了展示以下方法
一、访问文件名
1.getName()
获取文件名。
File f = new File("./test123.txt");
System.out.println(f.getName());//获取文件名
结果:
2.getPath()
获取文件相对路径,就是创建对象时写的路径。
File f = new File("./test123.txt");
System.out.println(f.getPath());//获取创建时写的文件路径
结果:
3.getAbsolutePath()
获取文件绝对路径。
File f = new File("./test123.txt");
System.out.println(f.getAbsolutePath());//获取文件路径+构造时的参数
// System.out.println(f.getCanonicalPath());//获取绝对路径,会报错,需要抛出异常
结果:
4.getParent()
获取文件父级文件路径。
File f = new File("D:/ZZZ_java_test/ZX_java_test/test123.txt");
System.out.println(f.getParent());//获取文件父级文件路径,以创建时编写的为准
结果:
5.renameTo(File newName)
对文件进行重命名。
File f = new File("./test123.txt");
System.out.println(f.exists());//判断文件是否存在(文件检测)此时存在
f.renameTo(new File("D:/ZZZ_java_test/ZX_java_test/test456.txt"));//重命名,文件路径必须相同
System.out.println(f.exists());//再次判断文件是否存在(文件检测)稀释文件名为test456,所以不存在
结果:
二、文件检测
1.exists()
判断文件是否存在,返回true或false。重命名处有演示,这里不赘述。
2.canRead()与canWrite()
判断文件能否可读 / 可写,返回true或false。这里放在啊一起讲解。
File f = new File("./test123.txt");
System.out.println(f.canRead());//判断是否可读
System.out.println(f.canWrite());//判断是否可写
结果:
原始状态:
修改为只读:
3.isFile()
判断是文件,返回true或false。
File f = new File("./test123.txt");
System.out.println(f.isFile());//判断是文件
4.isDirectory()
判断是目录(文件夹),返回true或false。
File f = new File("./test123.txt");
System.out.println(f.isDirectory());//判断是目录
三、获取常规文件信息
1.lastModify()
文件最后修改时间,返回的是个毫秒数。
File f = new File("./test123.txt");
System.out.println(f.lastModified());//文件最后修改时间
结果:
2.length()
判断文件长度,这里文件中写入数据:
File f = new File("./test123.txt");
System.out.println(f.length());//判断长度,字节,utf-8中文每字3字节
结果:
四、文件操作相关
1.createNewFile()
创建文件。
File f1 = new File("D:/ZZZ_java_test/ZX_java_test/test456.txt");
System.out.println(f1.exists());
System.out.println("=====创建文件=====");
if (!f1.exists()){//判断是否存在
try{
f1.createNewFile();//创建文件
}catch (IOException e){
e.printStackTrace();
}
}
System.out.println(f1.exists());
结果:
2.delete()
删除文件。
f1.delete();//删除文件
System.out.println(f1.exists());
结果:
五、目录操作相关
1.mkdir()与mkdirs()
创建单层 / 多层目录(文件夹)。
File f5 = new File("D:/ZZZ_java_test/ZX_java_test/a/b/c/d/e");
f5.mkdirs();//创建多级目录
结果:
2.list()
路径里所有文件的文件名称。
File f2 = new File("D:/ZZZ_java_test/ZX_java_test");
String[] s = f2.list();//返回路径文件夹下的文件名称
for(String s1 : s){
System.out.println("文件名:" + s1);
}
结果:
3.listFiles()
路径里所有文件的文件路径。
File f2 = new File("D:/ZZZ_java_test/ZX_java_test");
File[] ff = f2.listFiles();//返回路径文件夹下的file对象,路径
for(File fff : ff){
System.out.println("文件路径:" + fff);
}
结果:
继续下一章学习:
如有问题欢迎指正
参考:
https://blog.csdn.net/Xun_independent/article/details/114803602.