Java 文件操作-File

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 }

  该方法的参数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
*/

  

时间: 2024-10-26 09:30:35

Java 文件操作-File的相关文章

java 文件操作

一.获取文件列表 方法一:DirFilter类实现了FilenameFilter接口,需要重写FilenamFilter中的accept方法. 1 /** 2 * java文件操作 获取文件列表 3 * 2016/6/15 4 */ 5 package fileStream; 6 7 import java.io.File; 8 import java.io.FilenameFilter; 9 import java.util.regex.*; 10 import java.util.*; 11

java文件操作之FileWriter用法,向文件尾插入内容

原文:java文件操作之FileWriter用法,向文件尾插入内容 代码下载地址:http://www.zuidaima.com/share/1550463258610688.htm 向文件尾插入内容,通过FileWriter来实现,只要在构造时设置append=true即可. FileWriter fileWritter = new FileWriter(file.getName(), true);代码运行之后,文件生成在项目的根目录下. 标签: 文件 java FileWriter 插入话题

java文件操作之移动文件到指定的目录

原文:java文件操作之移动文件到指定的目录 代码下载地址:http://www.zuidaima.com/share/1550463261166592.htm java文件操作之移动文件到指定的目录,通过renameTo方法实现,而非copy后delete package com.zuidaima.util.file; import java.io.File; /** * 移动文件到指定的目录 * * @author www.zuidaima.com * */ public class Mov

[JS进阶] HTML5 之文件操作(file)

前言 在 HTML 文档中 <input type="file"> 标签每出现一次,一个 FileUpload 对象就会被创建. 该元素包含一个文本输入字段,用来输入文件名,还有一个按钮,用来打开文件选择对话框以便图形化选择文件. 该元素的 value 属性保存了用户指定的文件的名称,但是当包含一个 file-upload 元素的表单被提交的时候,浏览器会向服务器发送选中的文件的内容而不仅仅是发送文件名. 当用户选择或编辑一个文件名,file-upload 元素触发 onc

php基础知识总结(2)文件操作file

一.路径 1.dirname -- 返回路径中的目录部分      $path = "/etc/passwd";      $file = dirname($path); // "/etc" 2.basename -- 返回路径中的文件名部分     $path = "/home/httpd/html/index.php";     $file = basename($path);        // index.php     $file =

黑马程序员——JAVA学习笔记十一(文件操作File)

为了很方便的代表文件的概念,以及存储一些对于文件的基本操作,在java.io包中设计了一个专门的类——File类. 在File类中包含了大部分和文件操作的功能方法,该类的对象可以代表一个具体的文件或文件夹,所以以前曾有人建议将该类的类名修改成FilePath,因为该类也可以代表一个文件夹,更准确的说是可以代表一个文件路径. 1.创建文件 1)boolean java.io.File.createNewFile() throws IOException用来创建文件,如果文件存在,创建失败,返回fa

Java文件操作系列[2]——使用JXL操作Excel文件

由于java流无法实现对Excel文件的读写操作,因此在项目中经常利用第三方开源的组件来实现.支持Excel文件操作的第三方开源组件主要有Apache的POI和开源社区的JXL. 总体来说,二者的区别是:JXL较为轻量级,如果是对Excel文件的简单操作,建议使用JXL:POI的功能相当强大,但同时处理问题也相当的繁琐. 1.准备工作 [必需]下载JXL的jar包:jxl.jar [非必需]JXL API  (提取密码:zgqj) 2.一些必要的说明 主要是对Excel结构的说明: Excel后

Java文件操作大全

1 //1.创建文件夹 2 //import java.io.*; 3 File myFolderPath = new File(str1); 4 try { 5 if (!myFolderPath.exists()) { 6 myFolderPath.mkdir(); 7 } 8 } 9 catch (Exception e) { 10 System.out.println("新建目录操作出错"); 11 e.printStackTrace(); 12 } 13 14 //2.创建文

3.Java文件操作

概述 1.File类 字段摘要 构造方法 概述 1. File类 2. IO流的原理以及概念 3. IO流的体系 4. 字节流和字符流 5. 处理流 6. 文件拷贝 7. 文件分割与合并 1.File类 File类是文件和目录路径名的抽象形式.一个File对象可以代表一个文件或目录,但是不是完全对应的. File类对象主要用来获取文件本身的一些信息.目的在于:建立java程序和文件(文件夹)之间的联系.以便java程序对文件操作. 字段摘要 以下四种字段均与系统有关,主要是用来动态的书写路径,其