Java学习手册:File类


在Java中,对文件或目录进行管理与操作在编程中有着非常重要的作用,Java提供了一个非常重要的类(File)来管理文件和文件夹,通过类不仅能够查看文件或目录的属性,而且还可以实现对文件或目录的创建、删除与重命名等操作。

以下是File类中常用的几个方法:

方法作用
File(String pathname)根据指定的路径创建一个File对象
createNewFile()若目录或文件存在,则返回false,否则创建文件或文件夹
delete()删除文件或文件夹
isFile()判断这个对象表示的是否是文件
isDirectory()判断这个对象表示的是否是文件夹
listFiles()若对象代表目录,则返回目录中所有文件的File对象
mkdir()根据当前对象指定的路径创建目录
exists()判断对象对应的文件是否存在
getName()获取文件名
length()获取文件大小(字节量)
lastModified()查看文件最后一次修改时间

补充:RandomAccessFile(详见六)
java.io.RandomAccessFile
可以读写文件数据,读写操作是基于指针完成的,总是在指针当前位置进行读写操作。
模式常用到的有:
(1)“r”:只读
(2)“rw”:读写
读写完毕后,要调用close()关闭以释放连接。


一、如何列出某个目录下的所有目录与文件?

package com.haobi;

import java.io.File;
/*
 * 列出某个目录下的所有目录与文件
 */
public class ListFile {
	public static void main(String[] args) {
		File file = new File("E:\\File_java\\FileDemo");//文件路径
		//判断目录是否存在
		if(! file.exists()) {
			System.out.println("文件目录不存在!");
			return;
		}
		File[] fileList = file.listFiles();
		for(int i=0;i<fileList.length;i++) {
			//判断是文件或文件夹
			if(fileList[i].isDirectory()) {
				System.out.println("文件夹:"+fileList[i].getName());
			}else {
				System.out.println("文件:"+fileList[i].getName());
			}
		}
	}
}
//程序输出结果如下:
文件:.classpath
文件:.project
文件夹:.settings
文件夹:bin
文件夹:src

二、如何查看文件最后一次修改的时间?

package com.haobi;

import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;
/*
 * 查看文件最后一次修改时间
 */
public class FindLastModifiedTime {
	public static void main(String[] args) {
		File file = new File("E:\\File_java\\FileDemo");//文件路径
		//判断目录是否存在
		if(! file.exists()) {
			System.out.println("文件目录不存在!");
			return;
		}
		long last = file.lastModified();
		Date date = new Date(last);
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
		String str = sdf.format(date);
		System.out.println("文件的最后修改时间:"+str);
		
	}
}
//程序输出结果如下:
文件的最后修改时间:2019033117:18:12

三、如何创建一个多级目录?

package com.haobi;

import java.io.File;
/*
 * 创建一个多级目录
 * 在当前路径下创建a/b/c/d/e/f
 */
public class CreateDir {
	public static void main(String[] args) {
		File dir = new File("a"+File.separator+
							"b"+File.separator+
							"c"+File.separator+
							"d"+File.separator+
							"e"+File.separator+
							"f");
		if(!dir.exists()) {
			dir.mkdirs();//创建目录
			System.out.println("创建完成!");
		}
	}
}
//程序输出结果如下:
创建完成!

在这里插入图片描述
注:mkdirs()会在创建当前目录的同时一并创建所有不存在的父目录


四、如何删除目录?

package com.haobi;
import java.io.File;
/*
 * 删除当前目录下的目录"a"
 */
public class DeleteDir {
	//将给定的File对象删除
	private static void deleteFile(File file) {
		if(file.isDirectory()) {//如果当前file对象是目录
			File[] subs = file.listFiles();
			for(File sub:subs) {
				deleteFile(sub);//将每一个子项删除
			}
		}
		file.delete();
	}
	public static void main(String[] args) {
		File dir = new File("a");
		deleteFile(dir);
	}
}

五、如何获取一个目录下的所有子项?

package com.haobi;

import java.io.File;

/*
 * 获取当前目录下的所有子项(文件夹或目录)
 */
public class GetDir {
	public static void main(String[] args) {
		File dir = new File(".");//表示当前目录
		File[] subs = dir.listFiles();
		for(File sub:subs) {
			System.out.println((sub.isFile()?"文件:":"目录:")+sub.getName());
		}
	}
}
//程序输出结果如下:
文件:.classpath
文件:.project
目录:.settings
目录:bin
文件:iotest.txt
目录:src

六、如何复制文件?

package com.haobi;

import java.io.IOException;
import java.io.RandomAccessFile;
/*
 * 复制文件
 */
public class CopyFile {
	public static void main(String[] args) throws IOException{
		//创建RandomAccessFile读取源文件
		RandomAccessFile src = new RandomAccessFile("demo.txt","r");
		//创建RandomAccessFile向目标文件写
		RandomAccessFile desc = new RandomAccessFile("copy_demo.txt","rw");
		int d = -1;//随便设置,只用于初始化,被使用时会被重新赋值
		long start = System.currentTimeMillis();
		while((d=src.read()) != -1) {//如果没有读到文件末尾
			desc.write(d);//读写文件
		}
		long end = System.currentTimeMillis();
		System.out.println("拷贝完毕!耗时:"+(end-start)+"ms");
		src.close();
		desc.close();
	}
}
//程序输出结果如下:
拷贝完毕!耗时:0ms

七、如何批量写出字节?

package com.haobi;

import java.io.IOException;
import java.io.RandomAccessFile;
/*
 * 批量写出字节
 * 将字符串内容写入文件
 */
public class WriteByte {
	public static void main(String[] args) throws IOException{
		RandomAccessFile raf = new RandomAccessFile("text.txt","rw");
		String str = "我爱你";
		byte[] data = str.getBytes();
		raf.write(data);
		raf.close();
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值