1.File文件操作

  java.io.File用于表示文件(目录),也就是说程序员可以通过File类在程序中操作硬盘上的文件和目录。File类只用于表示文件(目录)的信息(名称、大小等),不能对文件的内容进行访问。

1)构造方法       

  • 构造方法一:File(String pathname)
  • 通过将给定路径名字符串转换成抽象路径名来创建一个新File实例
  • 抽象路径应尽量使用相对路径,并且目录的层级分隔符不要直接写“/”或“\”,因为不同的系统用的分隔符不一样,应该使用File.separator这个常量表示,以避免不同系统带来的差异。
import java.io.File;
public class FileDemo {public static void main(String[] args) { File file = new File("D:"+File.separator+"Study"+File.separator+"Java"+File.separator+"Workspaces"+File.separator+"MyProject"+File.separator+"filedemo.txt");System.out.println(file);}
}/*
运行结果:
D:\Study\Java\Workspaces\MyProject\filedemo.txt
*/

  • 构造方法二:File(File parent,String child)
  • 根据parent抽象路径名和child路径名字符串创建一个新File实例
import java.io.File;
public class FileDemo {public static void main(String[] args) { File parent = new File("D:"+File.separator+"Study"+File.separator+"Java"+File.separator+"Workspaces"+File.separator+"MyProject");File file = new File(parent,"filedemo.txt");System.out.println(file);}
}/*
运行结果:
D:\Study\Java\Workspaces\MyProject\filedemo.txt
*/

2)isFile()方法

  • 用于判断当前File对象所表示的是否为一个文件
  • 返回值为boolean类型
  • 返回值:true则表示是一个文件,false则不是文件
import java.io.File;
public class FileDemo {public static void main(String[] args) { File file = new File("filedemo.txt");boolean b = file.isFile();if(b){System.out.println(file+"是一个文件");}}
}/*
运行结果:
filedemo.txt是一个文件
*/

3)length()方法

  用于返回由此抽象路径名表示的文件的长度(占用的字节量)。

  • 返回值类型为long
  • 返回值是当前File对象所表示的文件所占用的字节量
import java.io.File;
public class FileDemo {public static void main(String[] args) { File file = new File("filedemo.txt");long len = file.length();System.out.println("该文件长度为:"+len+"字节");}
}/*
运行结果:
该文件长度为:11字节
*/

4)exists()方法

  用于测试此抽象路径名表示的文件或目录是否存在。

  • 返回值类型是boolean
  • 返回值:若该File表示的文件或目录存在则返回true,否则返回false
import java.io.File;
public class FileDemo {public static void main(String[] args) { File file = new File("filedemo.txt");boolean b = file.exists();System.out.println("该文件是否存在的结果是:"+b);File file2 = new File("file.txt");b = file2.exists();System.out.println("该文件是否存在的结果是:"+b);}
}/*
运行结果:
该文件是否存在的结果是:true
该文件是否存在的结果是:false
*/

5)creatNewFile()方法

  该方法用于当且仅当不存在具有此抽象路径名指定的名称的文件时,创建由此抽象路径名指定的一个新的空文件。

  • 返回值是boolean类型
  • 如果知道文件不存在并成功创建则返回true,如果知道文件已经存在则返回false
import java.io.File;
import java.io.IOException;
public class FileDemo {public static void main(String[] args) throws IOException { File file = new File("filedemo.txt");boolean b = file.createNewFile();System.out.println(b);File file2 = new File("file.txt");b = file2.createNewFile();   //成功创建不存在的该文件,如下图System.out.println(b);}
}/*
运行结果:
false
true
*/

6)delete()方法

  该方法用于删除此抽象路径名表示的文件或目录。

  • 返回值类型为boolean
  • 当且仅当成功删除文件或目录时,返回true;否则返回false
  • 注意:若此file对象所表示的是一个目录时,在删除时需要保证此目录为空才可以成功删除(目录中不能含有任何子项)
import java.io.File;
public class FileDemo {public static void main(String[] args) { File file = new File("file.txt");boolean b = file.delete();System.out.println(b);File dir = new File("test");   //test文件夹下面建立了子文件夹和子文件b = dir.delete();System.out.println(b);}
}/*
运行结果:
true     成功删除
false    含有子文件不能删除,返回false
*/

7)isDirectory()方法

  该方法用于判断当前File表示的是否为一个目录。

  • 返回值类型为boolean类型
  • 返回值:当File对象表示一个目录时返回true,否则返回false
import java.io.File;public class FileDemo {public static void main(String[] args) { File dir = new File("test");boolean b = dir.isDirectory();System.out.println(b);File file = new File("filedemo.txt");b = file.isDirectory();System.out.println(b);}
}/*
运行结果:
true
false
*/

8)mkdir()方法

  该方法用于创建此抽象路径名指定的目录。

  • 返回值类型为boolean类型
  • 当且仅当已创建目录时返回true,否则返回false
  • 当创建的文件夹不存在父目录时无法创建(不能创建多级目录)
import java.io.File;public class FileDemo {public static void main(String[] args) { File dir = new File("dirdemo");boolean b = dir.mkdir();System.out.println(b);//dirdemo1这个文件夹是不存在的,看是否能够建立成功File dir2 = new File("dirdemo1"+File.separator+"dirdemo2"+File.separator+"dirdemo3");b = dir2.mkdir();System.out.println(b);}
}/*
运行结果:
true
false  说明mkdir()无法创建没有父目录的目录
*/

  

9)mkdirs()方法

  该方法用于创建此抽象路径名指定的目录,包括所有必须但不存在的父目录。注意:此操作失败时也可能已经成功地创建了一部分必须的父目录。

  • 返回值为boolean类型
  • 当且仅当创建目录以及所有必须的父目录时返回true,否则返回false
import java.io.File;public class FileDemo {public static void main(String[] args) { //dirdemo1这个文件夹是不存在的,看是否能够建立成功File dir = new File("dirdemo1"+File.separator+"dirdemo2"+File.separator+"dirdemo3");boolean b = dir.mkdirs();System.out.println(b);}
}//运行结果:true   检查文件夹发现创建成功

  

10)listFiles()方法

  该方法用于返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的子项(文件或目录)。

  • File[] listFiles()
  • 返回值:抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件和目录,如果目录为空,数组也是空,如果抽象路径名不表示一个目录或者发生I/O错误,则返回null
import java.io.File;
import java.util.Arrays;public class FileDemo {public static void main(String[] args) { File file = new File("dirdemo");File[] list = file.listFiles();System.out.println(Arrays.toString(list));//变量该数组内容for(File x:list){System.out.println(x);}File file2 = new File("filedemo.txt");File[] list2 = file2.listFiles();System.out.println(Arrays.toString(list2));}
}/*
运行结果:
[dirdemo\one, dirdemo\one.txt]
dirdemo\one
dirdemo\one.txt
null        filedemo.txt是文件不是目录,所以返回null
*/

11)FileFilter接口

  • 用于抽象路径名的过滤器
  • 此接口的实例可传递给File类的listFiles(FileFilter)方法,用于返回满足该过滤器要求的子项

  通过listFiles方法可以获取一个目录下所有的子项,有时候只希望获取部分特定的子项,这时可以使用File的重载方法:

  File[] listFiles(FileFilter  filter)

  该重载方法要求传入一个参数,类型是FileFilter,FileFilter是用于抽象路径名的过滤器,相当于定义一个规则来过滤文件。FileFilter是一个接口,所以定义规则时,可以定义一个类来实现这个接口,而此接口的实例可传递给File类的listFiles(FileFilter)方法,如案例1。

案例1:过滤所有以.txt结尾的文件

 1 import java.io.File;
 2 import java.io.FileFilter;
 3 import java.util.Arrays;
 4
 5 public class FileDemo {
 6     public static void main(String[] args) {
 7         File dir = new File("."); //.表示当前目录
 8         File[] subs = dir.listFiles(new FileFilter(){
 9             public boolean accept(File file){
10                 return file.getName().endsWith(".txt");
11             }
12         });
13         System.out.println(Arrays.toString(subs));
14         //遍历
15         for(File sub:subs){
16             System.out.println(sub);
17         }
18     }
19 }

View Code

  该方法的参数FileFilter实例的accept方法进行过滤,listFiles方法会将所有accept方法返回true的子项保留并返回。

案例2:查看文件的相关信息

要求:查看文件名、大小、可读、可写、是否隐藏、最后修改时间

import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;public class FileInfoDemo {public static void main(String[] args) {File file = new File("filedemo.txt");//获取文件名String name = file.getName();System.out.println("文件名:"+name);//获取文件大小,有多少字节long len = file.length();System.out.println("文件有"+len+"个字节");//查看是否可读boolean canRead = file.canRead();System.out.println("可读:"+canRead);//查看文件是否可写boolean canWrite = file.canWrite();System.out.println("可写:"+canWrite);//查看文件是否隐藏boolean isHidden = file.isFile();System.out.println("是否隐藏:"+isHidden);//查看最后修改文件时间long time = file.lastModified();System.out.println("最后修改时间:"+time);//转换时间格式输出SimpleDateFormat sdf = new SimpleDateFormat("yy-MM-dd HH:mm:ss");Date date = new Date(time);System.out.println("最后修改时间:"+sdf.format(date));}
}/*
运行结果:
文件名:filedemo.txt
文件有11个字节
可读:true
可写:true
是否隐藏:true
最后修改时间:1496414987501
最后修改时间:17-06-02 22:49:47
*/

  

案例3:删除目录

要求:判断目录是否存在,存在则删除

import java.io.File;public class FileDeleteDemo {public static void main(String[] args) {File file = new File("dira");if(file.exists()){file.delete();  //使用delete删除目录时,要求该目录必须是空目录才能删除System.out.println("删除文件完毕");}else{System.out.println("文件不存在");}}
}

案例4:删除非空目录

import java.io.File;public class FileDeleteDemo {public static void main(String[] args) {File file = new File("dirdemo");if(file.exists()){file.delete();System.out.println("删除文件完毕");}else{System.out.println("文件不存在");}boolean b = file.exists();  //存在是true,不存在是falseSystem.out.println("文件是否真的删除:"+!b);  //文件还存在,并没有真被删除}
}/*
运行结果:
删除文件完毕
文件是否真的删除:false
*/

案例5:判断文件是否存在不存在就创建

import java.io.File;
import java.io.IOException;public class File_createNewFile {public static void main(String[] args) throws IOException {File file = new File("a.txt");if(!file.exists()){file.createNewFile();System.out.println("文件创建完毕");}else{System.out.println("文件已存在");}}
}

  

案例6:删除文件或非空目录方法

import java.io.File;
/*** 思路:* 1.先获取该目录的子项* 2.判断子项是文件还是目录* 3.是文件就删除,是目录就继续获取子项* 4.直到最后一个空目录为止*/
public interface FileDeleteDemo02 {public static void main(String[] args) {File file = new File("dirdemo");fileDelete(file);}public static void fileDelete(File file){  //删除文件方法if(file.isDirectory()){   //如果是目录就获取子项File[] subs = file.listFiles();for(File sub:subs){fileDelete(sub);}}file.delete();   //如果是文件(不是目录)就删除}
}//这里用到了递归方法

案例7:获取当前目录的子项分别输出目录和文件

import java.io.File;public class File_listFiles {public static void main(String[] args) {File file = new File(".");  //.代表当前路径File[] subs = file.listFiles();for(File sub:subs){if(sub.isFile()){System.out.print("文件:");}if(sub.isDirectory()){System.out.print("目录:");}System.out.println(sub.getName());}}
}/*
运行结果:
文件:.classpath
文件:.project
目录:.settings
目录:bin
文件:demo.txt
目录:dirdemo1
文件:filedemo.txt
文件:fos.txt
文件:raf.txt
目录:src
目录:test
*/

  

转载于:https://www.cnblogs.com/jmwm/p/6926442.html

Java 文件操作-File相关推荐

  1. Java 文件操作 File 及 RandomAccessFile

    一. File类概述 一个代表文件或目录的类 目录 : 只是将一个字符串标记为一个目录  , 路径所占的内存空间大小为0. 二. 重要方法 创建 createNewFile() : 文件不存在时,创建 ...

  2. Java文件操作大全(绝对的经典,值得收藏!)

    Java文件操作 //1.创建文件夹 //import java.io.*; File myFolderPath = new File(str1); try { if (!myFolderPath.e ...

  3. 【Java文件操作(七)】序列化:将自定义类写入文件

    我的博客--Java文件操作系列 [Java文件操作(一)]递归打印文件目录 [Java文件操作(二)]删除文件夹,但保留其内部文件 [Java文件操作(三)]递归复制文件夹内所有文件 [Java文件 ...

  4. 【Java文件操作(六)】借助内存复制图片:ByteArrayOutputStream\ByteArrayInputStream\FileOutputStream\FileInputStream辨析

    我的博客--Java文件操作系列 [Java文件操作(一)]递归打印文件目录 [Java文件操作(二)]删除文件夹,但保留其内部文件 [Java文件操作(三)]递归复制文件夹内所有文件 [Java文件 ...

  5. 【Java文件操作(三)】递归复制文件夹内所有文件

    我的博客--Java文件操作系列 [Java文件操作(一)]递归打印文件目录 [Java文件操作(二)]删除文件夹,但保留其内部文件 [Java文件操作(三)]递归复制文件夹内所有文件 [Java文件 ...

  6. 【Java文件操作(一)】递归打印文件目录

    我的博客--Java文件操作系列 [Java文件操作(一)]递归打印文件目录 [Java文件操作(二)]删除文件夹,但保留其内部文件 [Java文件操作(三)]递归复制文件夹内所有文件 [Java 文 ...

  7. java文件操作和_JAVA文件操作类和文件夹的操作

    JAVA文件操作类和文件夹的操作 package com.gamvan.tools; import java.io.BufferedReader; import java.io.File; impor ...

  8. 读取Java文件到byte数组的三种方式及Java文件操作大全(包括文件加密,String加密)

    读取Java文件到byte数组的三种方式 package zs;import java.io.BufferedInputStream; import java.io.ByteArrayOutputSt ...

  9. Java文件操作源码大全

    Java文件操作源码大全 1.创建文件夹 5 2.创建文件 5 3.删除文件 5 4.删除文件夹 6 5.删除一个文件下夹所有的文件夹 7 6.清空文件夹 8 7.读取文件 8 8.写入文件 9 9. ...

最新文章

  1. 设计模式 2014-12-19
  2. 2021年春季学期-信号与系统-第十五次作业参考答案-第十一小题参考答案
  3. 杭电多校第三场-H-Game
  4. #if defined 和 #if ! defined 的用法
  5. 【设计模式 05】工厂方法模式
  6. 水面反光如何拍摄_拍摄水面反射的创意
  7. 24 FI配置-财务会计-允许负值记账
  8. CentOS 7 怎样安装或升级最新的内核?
  9. 03-03 APP 控件定位
  10. 【无标题】写博客的第一天
  11. String s = new String(“abc“)创建了几个对象
  12. 实验四------实验十二
  13. 摄氏温度和华氏温度换算(vb源码)
  14. 反证法与归谬法的区别
  15. Citrix ADC中SNIP的三种配置场景
  16. led灯光衰怎么解决_如何解决LED光衰的问题
  17. ### 20165219 2017-2018-2《Java程序设计》结对编程一 第二周总结
  18. Oracle中慎用Like等通配符
  19. 怎么样让别人访问我的计算机,局域网内怎么让别人访问我的电脑
  20. 比DOORS好用的需求管理系统有哪些?对比10大需求管理工具

热门文章

  1. WordPress程序伪静态规则(Nginx/Apache)及二级目录规则
  2. JS 动态显示 获取下拉框的多个值
  3. 图像优化算法(HE、AHE、CLAHE)简单介绍
  4. python插件使用教程_Python插件机制实现详解
  5. DataNode逻辑结构
  6. 基于ZYNQ FPGA实现图像采集存储显示
  7. (123)FPGA面试题-介绍低速接口(UART、IIC、SPI),SPI有几根线,每根线的作用?(三)
  8. (01)System Verilog 程序数据采集
  9. MySQL等级考试题目练习_全国计算机等级考试二级MySQL练习题
  10. 鼠标自动点击脚本_613个主流网站中发现点击劫持脚本