四. 文件查看基本信息
四.一 方法
四.二 演示
//展示文件的基本的信息 @Test public void showTest(){ File file=new File("E:"+File.separator+"ideaWork"+File.separator+"Java2"+File.separator+"fileSrc" +File.separator+"Hello.txt"); System.out.println("文件是否存在:"+file.exists()); //E:\ideaWork\Java2\fileSrc\Hello.txt System.out.println("文件的绝对路径:"+file.getAbsolutePath()); // E:\ideaWork\Java2\fileSrc\Hello.txt System.out.println("文件路径:"+file.getPath()); System.out.println("文件大小:"+file.length()); //可以修改的 System.out.println("文件最后的修改时间:"+file.lastModified()); System.out.println("文件的名称:"+file.getName()); System.out.println("文件的父路径:"+file.getParent()); System.out.println("文件是否是普通文件:"+file.isFile()); System.out.println("文件是否是目录:"+file.isDirectory()); //获取父类文件 File parent=file.getParentFile(); System.out.println("父类文件的名称:"+parent.getName()+",是否是目录:"+parent.isDirectory()); }
控制台打印输出:
四.三 比较 getAbsolutePath() 和 getPath() 的区别
//两个路径的比较 @Test public void pathDiffTest(){ //绝对路径传入 File file1=new File("E:"+File.separator+"ideaWork"+File.separator+"Java2"+File.separator+"fileSrc" +File.separator+"Hello.txt"); //E:\ideaWork\Java2\fileSrc\Hello.txt System.out.println("文件的绝对路径:"+file1.getAbsolutePath()); // E:\ideaWork\Java2\fileSrc\Hello.txt System.out.println("文件路径:"+file1.getPath()); // 相对路径传入 File file2=new File("src"+File.separator+"Hello.txt"); // E:\ideaWork\Java2\src\Hello.txt System.out.println("文件的绝对路径:"+file2.getAbsolutePath()); // src\Hello.txt System.out.println("文件路径:"+file2.getPath()+"文件名称:"+file2.length()); }
控制台打印输出:
建议 使用 getAbsolutePath() 获取绝对路径, 然后根据绝对路径进行处理。
五. 文件的可读,可写,可执行, 最后修改时间
文件有三种权限, 可读,可写,可执行, 即 rwx
五.一 方法
五.二 演示
/* * 设置文件的可读,可写,可运行,最后修改时间*/ @Test public void rwTest(){ File file1=new File("E:"+File.separator+"ideaWork"+File.separator+"Java2"+File.separator+"fileSrc" +File.separator+"Hello.txt"); System.out.println("文件是否可读:"+file1.canRead()); //true System.out.println("文件是否可写:"+file1.canWrite());//true System.out.println("文件是否可运行:"+ file1.canExecute()); //true System.out.println("文件是否是隐藏的:"+file1.isHidden());//false //设置文件的类型 //设置成只读 file1.setReadOnly(); System.out.println("看是否能写:"+file1.canWrite()); //false file1.setWritable(true); System.out.println("文件是否可写:"+file1.canWrite()); //true System.out.println("文件的最后修改时间:"+file1.lastModified()); //1591933582333 file1.setLastModified(1000); System.out.println("文件的最后修改时间:"+file1.lastModified()); //1000 }
控制台打印输出:
六. 关于文件目录的创建操作
六.一 方法
六.二 演示
//目录的相关操作 @Test public void DireTest(){ //后面没有文件后缀,是一个目录。 File file=new File("E:"+File.separator+"ideaWork"+File.separator+"Java2"+File.separator+"fileSrc2"); //注意,必须保证Java2 目录一定是存在的 if(!file.exists()&&file.isDirectory()){ //创建目录 file.mkdir(); } //父级目录 b, 包括b的父级 a 都是不存在的。 File file3=new File("E:"+File.separator+"ideaWork"+File.separator+"Java2"+File.separator+"fileSrc" +File.separator+"a"+File.separator+"b"+File.separator+"c"); if(!file3.exists()){ //不报错 file3.mkdirs(); } }
六.二 演示
//目录的相关操作 @Test public void DireTest(){ //后面没有文件后缀,是一个目录。 File file=new File("E:"+File.separator+"ideaWork"+File.separator+"Java2"+File.separator+"fileSrc2"); //注意,必须保证Java2 目录一定是存在的 if(!file.exists()&&file.isDirectory()){ //创建目录 file.mkdir(); } //父级目录 b, 包括b的父级 a 都是不存在的。 File file3=new File("E:"+File.separator+"ideaWork"+File.separator+"Java2"+File.separator+"fileSrc" +File.separator+"a"+File.separator+"b"+File.separator+"c"); if(!file3.exists()){ //不报错 file3.mkdirs(); } }
运行之后,会发现, 创建了 fileSrc2 目录, 并且 fileSrc 下,也依次创建了 a/b/c 目录。
如果:
@Test public void Dire1Test(){ File file=new File("E:"+File.separator+"ideaWork"+File.separator+"Java2"+File.separator+"fileSrc" +File.separator+"e"+File.separator+"f"+File.separator+"g"); if(!file.exists()){ //不报错 file.mkdir(); } }
没有 e,f,g 目录。
此时运行之后,程序不报错,但也不会创建目录。
建议,使用时, 要递归创建目录, 即 使用 mkdirs() 方法。