1.java.io.File类的使用
1.1 概述
对File类的理解:
- File类位于java.io包下;
- File类的一个对象,对应于操作系统下的一个文件或一个文件目录(文件夹),与平台无关;(体会万事万物皆对象)
- File能新建、删除、重命名文件和文件目录,但是File不能访问文件内容本身。如果需要访问文件内容本身,则需要使用输入输出流;
- File对象可以作为参数传递给流的构造器。
- 想要在java程序在表示一个真实存在的文件或目录,那么必须有一个File对象,但是java程序中的一个File对象,可能没有一个真实存在的文件或目录。
1.2 构造器
public File(String pathname):以pathname为路径创建File对象,可以是绝对路径或者相对路径,如果pathname是相对路径,则默认的当前路径在系统属性user.dir中存储。public File(String parent, String child):以parent为父路径,child为子路径创建File对象。public File(File parent, String child):根据一个父File对象和子文件路径创建File对象
关于文件路径的表示方法:
1.绝对路径:以Windows为例,包括盘符在内的文件或文件目录的完整路径
2.相对路径:相对于某一个文件目录来讲的相对的位置
注意:在idea中,如果使用单元测试方法,相对于当前的module来讲;如果使用main()方法,相对于当前的project来讲
代码示例:
public static void main(String[] args) {
File file = new File("ams"); System.out.println("main()方法下的绝对路径:" + file.getAbsoluteFile()); //main()方法下的绝对路径:E:\Java\workplace\java_workplce\java-se-day21\file-study\ams } @Test public void test1(){
//熟悉创建File对象的创建 //创建的文件对象没有在真实的硬盘中线 //File(String pathname) pathname 文件的抽象路径名(文件的路径+文件名) File file = new File("D:\\Program Files\\feiq"); System.out.println("file: " + file); //file: D:\Program Files\feiq //File(String patent,String child) parent+child = pathname //参数1:一定是一个文件目录 //参数2:可以是一个文件,也可以是一个文件目录 File file1 = new File("D:\\Steam\\steamapps\\common", "Devil May Cry 5"); System.out.println("file1: " + file1); //file1: D:\Steam\steamapps\common\Devil May Cry 5 File file5 = new File("abc", "a12"); File file2 = new File("D:\\Steam\\steamapps\\common\\dota 2 beta", "game\\bin"); System.out.println("file2: " + file2); //file2:D:\Steam\steamapps\common\dota 2 beta\game\bin //File(File parent,String child) //参数1:一定是一个文件目录 //参数2:可以是一个文件目录,也可以是文件 File file3 = new File(file1, "dota 2 beta"); System.out.println("file3: " + file3);//file3: D:\Steam\steamapps\common\Devil May Cry 5\dota 2 beta File file4 = new File("ame"); //获取file4的绝对路径 System.out.println("单元测试方法下的绝对路径:" + file4.getAbsoluteFile()); //E:\Java\workplace\java_workplce\java-se-day21\file-study\ame }
讯享网
1.3 常用方法
1.3.1 获取文件和基本信息
- public String getName() :获取名称
- public String getPath() :获取路径
public String getAbsolutePath():获取绝对路径- public File getAbsoluteFile():获取绝对路径表示的文件
public String getParent():获取上层文件目录路径。若无,返回null- public long length() :获取文件长度(即:字节数)。不能获取目录的长度。
- public long lastModified() :获取最后一次的修改时间,毫秒值
代码示例:
讯享网 @Test public void test1(){
//测试相对路径下的方法: File file = new File("hello.txt"); //在module下创建了一个hello.txt,输入了1-8 System.out.println("文件名称为:" + file.getName()); System.out.println("文件构造路径为:" + file.getPath()); System.out.println("文件的绝对路径为:" + file.getAbsolutePath()); System.out.println("文件绝对路径表示的文件:" + file.getAbsoluteFile()); System.out.println("上层文件目录获取:" + file.getAbsoluteFile().getParent()); System.out.println(file.getParent()); //由于是相对路径,没有指定父类,所以返回null System.out.println("文件长度为:" + file.length() + "字节"); //此处是将时间戳转为年月日 Date date = new Date(file.lastModified()); // System.out.println(date.toLocaleString()); System.out.println("文件的最后修改时间为:" + date); }

@Test public void test2(){
File file = new File("D:\\Steam\\steamapps\\common"); System.out.println("文件名称为:" + file.getName()); System.out.println("文件构造路径为:" + file.getPath()); System.out.println("文件的绝对路径为:" + file.getAbsolutePath()); System.out.println("文件绝对路径表示的文件:" + file.getAbsoluteFile()); System.out.println("上层文件目录获取:" + file.getAbsoluteFile().getParent()); System.out.println(file.getParent()); //由于是绝对路径,有指定父类,所以返回上层路径 System.out.println("文件长度为:" + file.length() + "字节"); //此处是将时间戳转为年月日 Date date = new Date(file.lastModified()); // System.out.println(date.toLocaleString()); System.out.println("文件的最后修改时间为:" + date); }

(此处是打印输出我的steam文件下的文件夹的路径)
1.3.2 列出目录的下一级
- public String[] list() :返回一个String数组,表示该File目录中的所有子文件或目录。
- public File[] listFiles() :返回一个File数组,表示该File目录中的所有的子文件或目录。
代码示例:
讯享网@Test public void test3(){
File file = new File("D:\\Steam\\steamapps\\common"); String[] list = file.list(); for (String s : list) {
System.out.print(s + "\t\t"); } System.out.println(); System.out.println("-------------------------------"); File[] files = file.listFiles(); for (File file1 : files) {
System.out.println(file1 + "\t"); } }

1.3.3 File的重命名方法
- public boolean renameTo(File dest):把文件重命名为指定的文件路径。
/ * File的重命名方法: * public boolean renameTo(File dest):把文件重命名为指定的文件路径。 * 如果是绝对路径,才会移动到磁盘,如果是相对路径,就是只修改文件名 * * boolean renameTo = file1.renameTo(file2);返回true的要求: * file1必须存在,且file2必须不存在,且file2所在的文件目录必须存在 */ @Test public void test4(){
File file1 = new File("hello.txt"); File file2 = new File("D:\\io\\common"); boolean renameTo = file1.renameTo(file2); System.out.println(renameTo?"重命名成功":"重命名失败"); }
1.3.4 判断功能的方法
public boolean exists():此File表示的文件或目录是否实际存在。public boolean isDirectory():此File表示的是否为目录。public boolean isFile():此File表示的是否为文件。- public boolean canRead() :判断是否可读
- public boolean canWrite() :判断是否可写
- public boolean isHidden() :判断是否隐藏
代码示例:
讯享网@Test public void test5(){
File file = new File("D:\\io\\common"); System.out.println("文件是否存在?:" + file.exists()); System.out.println("文件是否是目录?:" + file.isDirectory()); System.out.println("是否是文件?:" + file.isFile()); System.out.println("文件是否可读?:" + file.canRead()); System.out.println("文件是否可编辑?" + file.canWrite()); System.out.println("文件是否隐藏?:" + file.isHidden()); System.out.println("--------------------------------------------"); File file1 = new File("D:\\io"); System.out.println("文件是否存在?:" + file.exists()); System.out.println("文件是否是目录?:" + file.isDirectory()); System.out.println("是否是文件?:" + file.isFile()); System.out.println("文件是否可读?:" + file.canRead()); System.out.println("文件是否可编辑?" + file.canWrite()); System.out.println("文件是否隐藏?:" + file.isHidden()); }
输出结果: 文件是否存在?:true 文件是否是目录?:false 是否是文件?:true 文件是否可读?:true 文件是否可编辑?true 文件是否隐藏?:false -------------------------------------------- 文件是否存在?:true 文件是否是目录?:false 是否是文件?:true 文件是否可读?:true 文件是否可编辑?true 文件是否隐藏?:false Process finished with exit code 0
1.3.5 创建、删除功能
public boolean createNewFile():创建文件。若文件存在,则不创建,返回false。public boolean mkdir():创建文件目录。如果此文件目录存在,就不创建了。如果此文件目录的上层目录不存在,也不创建。public boolean mkdirs():创建文件目录。如果上层文件目录不存在,一并创建。public boolean delete():删除文件或者文件夹
删除注意事项:① Java中的删除不走回收站。② 要删除一个文件目录,请注意该文件目录内不能包含文件或者文件目录。
代码示例:
讯享网@Test public void test6() throws IOException { File file = new File("D:\\io\\hello.txt"); //没有文件就创建文件 if (!file.exists()) { file.createNewFile(); System.out.println("文件创建成功"); }else { System.out.println("文件已存在"); //删除注意事项:① Java中的删除不走回收站。② 要删除一个文件目录,请注意该文件目录内不能包含文件或者文件目录。 boolean delete = file.delete(); System.out.println(delete?"文件删除成功":"文件删除失败"); } } @Test public void test7(){ File file = new File("D:\\io\\io1"); boolean mkdir = file.mkdir(); System.out.println(mkdir); File file1 = new File("D:\\io\\io2"); boolean mkdirs = file1.mkdirs(); System.out.println(mkdirs); } @Test public void test8(){ //前提:D:\io存在,io1,io2不存在 File file = new File("D:\\io\\io1\\io8"); //false,因为只能创建一个文件夹 boolean mkdir = file.mkdir(); System.out.println(mkdir); File file1 = new File("D:\\io\\io2\\io4");//true,可以创建多级文件夹 boolean mkdirs = file1.mkdirs(); System.out.println(mkdirs); } }

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/61314.html