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 importjava.io.File;2 importjava.io.FileFilter;3 importjava.util.Arrays;4

5 public classFileDemo {6 public static voidmain(String[] args) {7 File dir = new File("."); //.表示当前目录

8 File[] subs = dir.listFiles(newFileFilter(){9 public booleanaccept(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,不存在是false

System.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

*/

java返回值变为文件_Java 文件操作-File相关推荐

  1. java 返回值 泛型 继承_java泛型类继承问题?

    如题所示,想通过继承GeoResult类来扩展属性//GeoResult 类 public class GeoResult implements Serializable { private stat ...

  2. 文件类的操作 File c# 1614823687

    文件类的操作 File c# 1614823687 文件是否存在 文件的复制 复制前 代码 运行后的目录,复制成功了 小结 复制是边复制边重命名 注意 源文件必需得有 目标文件必需不存在 文件的移动操 ...

  3. .java文件_Java文件操作

    1.以文件流的方式复制文件 将一个已存在文件复制到指定位置,如本例中将源文件"/home/hadoop/Scene1"拷贝一份重命名为"/home/hadoop/Scen ...

  4. java 暂停等返回值在执行_java面试技巧(2)

    java面试试题及答案 以下是Java面试问题及答案: 1.简要介绍java程序的健壮性. 答:JAVA 程序会在编译和运行的时候自动的检测可能出现的错误,而且它是一种强类型语言,对于类型的检查很严格 ...

  5. python获取接口返回值_Python+request 登录接口reponse的返回值token跨py文件的传递《二》...

    主要使用场景: 一般我们在进行接口测试时,依赖登录接口后reponse中的某些返回值,因此需要将login接口单独写一个py文件,另外的py文件均可调用login的reponse返回值使用.共用登录接 ...

  6. java 流文件_Java文件流相关

    Java里面,将IO流体系按操作方式分类,可分为字节流和字符流.相关类结构图如下: 字节流和字符流.png 字节流相关的基类是InputStream/OutputStream,其操作方式处理的最基本的 ...

  7. java 读取css文件_java文件读取的两种方式

    JAVA中读取文件(二进制,字符)内容的几种方 JAVA中读取文件内容的方法有很多,比如按字节读取文件内容,按字符读取文件内容,按行读取文件内容,随机读取文件内容等方法,本文就以上方法的具体实现给出代 ...

  8. java文件解压文件_java 文件解压缩

    直接上代码: import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; ...

  9. matlab .m 返回值,MATLAB一个M文件的function返回值怎么在另一个M文件中的函数调用这个返回值?...

    答:1.首先要在笔记本电脑上安装好指定版本的matlab软件并双击打开. 2.然后双击matlab图标打开其主页面,可以看到这个软件的按钮都是全英文单词的. 3.那么创建m文件的方法就是鼠标移动到Ne ...

最新文章

  1. java junit 运行_appium+java+junit demo运行
  2. 简单的鼠标可拖动div 兼容IE/FF
  3. 滑动窗口算法应用及详解
  4. Service Worker 概念简介
  5. 计算机专业课程设计报告c语言,计算机程序设计(C语言)课程设计报告.doc
  6. ctfshow-萌新-web12( 利用命令执行函数获取网站敏感信息)
  7. 修改 Chrome浏览器主页被劫持 chrome 主页被篡改成hao.qquu8.com的解决方案
  8. 初始化和清理(构造器+重载/重写+this关键字)
  9. 关于Kindle的生词提示功能不显示
  10. 为什么要学好数据结构和算法
  11. 什么是银行的表内表外业务?
  12. Linux:进程(二)
  13. 清除90天苹果充值记录_王者荣耀安卓苹果跨系统角色转移服务,限量测试收费99元...
  14. 激活数字营销新引擎,亚马逊云科技为企业带来数字化营销新体验
  15. H3C系列交换机系统版本升级及导入配置
  16. Learning to Rank基于pairwise的算法(一)——Ranking SVM、MHR、IRSVM
  17. 2021年全球无线天线收入大约6724.2百万美元,预计2028年达到14740百万美元
  18. 景联文科技:关于语音标注,你知道多少?
  19. 新能源与自动驾驶汽车市场
  20. 上海市计算机应用大赛答辩,2017年(第九届)上海市大学生计算机应用能力大赛(决赛)在我校成功举办...

热门文章

  1. 完美解决Linux服务器tomcat开机自启动问题
  2. 解决mybatis中#{}导致的The error may involve defaultParameterMap的问题
  3. Grunt手表错误 - 等待...致命错误:观看ENOSPC
  4. “rm -rf”相当于Windows?
  5. 如何找到调用当前方法的方法?
  6. ssm配置多数据库支持
  7. 怎样能做好百度竞价推广?不妨参考下这篇竞价推广的日常工作流程
  8. centos iptables 防火墙配置
  9. IT十八掌作业_java基础第十二天_集合
  10. struts2.1.6教程七、国际化