针对File类的各种操作

File类
用于描述操作系统中的一个文件或者目录.
通过该类我们可以得知描述的文件或者目录的信息,例如,名字,大小,修改日期等等.但是不能对其内容进行访问.

import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**


 * java访问文件或目录
 * @author Administrator
 *
 */
public class FileDemo {

	public static void main(String[] args) {
		//java.io.File
		/**
		 * 构造方法中可以添加文件的路径
		 * elipse中,当前目录指的是eclipse中当前项目的根目录
		 */
		/**
		 * 目录层级分隔符使用File的一个常量来表示
		 * 这样就可以避免不同操作系统的差异性
		 * File.separator
		 */
		String path="."+File.separator+"myfile.txt";
		System.out.println(path);//   .\myfile.txt
		/**
		 * 创建的file对象描述的就是项目根目录下的myfile.txt文件了
		 */
		File file=new File(path);
		/**
		 * 通过该对象我们可以获取当前文件的信息
		 * 但是不能得知其内容,
		 */
		/**
		 * 获取文件的大小
		 * long  length()  返回值为文件的总字节量
		 */
		System.out.println("文件大小:"+file.length()+"字节");
		/**
		 * 获取当前文件名
		 * String getName()
		 */
		System.out.println("文件名:"+file.getName());
		/**
		 * 获取当前文件路径
		 * String getPath()
		 */
		System.out.println("路径:"+file.getPath());
		/**
		 * 获取当前文件绝对路径
		 * 含相对路径
		 * String getAbsolutePath()
		 */
		System.out.println("绝对路径:"+file.getAbsolutePath());
		/**
		 * 获取当前操作系统标准绝对路径
		 * 
		 * String getCanonicalPath()
		 * 但是该方法需要捕获异常
		 */
		try {
			System.out.println(file.getCanonicalPath());
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		/**
		 * 获取当前文件最后修改时间
		 * long lastModified()
		 */
		//long-->date
		Date d=new Date(file.lastModified());
		SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		String dateStr=df.format(d);
		System.out.println("最后修改日期:"+dateStr);
		/**
		 * 询问该File对象,描述的是一个文件么
		 * boolean isFile()
		 * true:是一个文件
		 */
		System.out.println("是一个文件:"+file.isFile());
		/**
		 * 询问File对象,描述的是否为一个目录
		 * boolean isDirectory
		 * true: 是一个目录
		 */
		System.out.println("是一个目录:"+file.isDirectory());
		/**
		 * 询问该文件是否可读
		 * boolean canRead()
		 * true:可读
		 */
		System.out.println("可读:"+file.canRead());
		/**
		 * 询问该文件是否可写
		 * boolean canWrite()
		 * true:可写
		 */
		System.out.println("可写:"+file.canWrite());
		
		

	}

}

通过File创建文件或目录
boolean mkdir(): 当前File对象描述的目录
当且仅当目录创建成功返回true.
boolean mkdirs():创建当前File对象描述的目录,同时自动创建所有不存在的父目录
boolean createNewFile():创建File对象描述的文件
boolean delete():删除当前File对象描述的文件或者目录.

import java.io.File;
import java.io.IOException;

/**
 * 创建文件,目录
 * @author Administrator
 *
 */
public class FileDemo2 {

	public static void main(String[] args) throws IOException {
		/**
		 * 使用File对象描述一个目录
		 * 路径:mydir等效./mydir
		 * 都代表了当前目录下的mydir
		 */
		File file=new File("mydir");
		/**
		 * 判断创建的file对象所描述的文件或者目录是否存在
		 */
		if(!file.exists()){
			/*


*
			 * 若不存在,则创建该目录
			 */
			file.mkdir();
			System.out.println("目录创建成功");
		}
		System.out.println(file.getCanonicalPath());
		String Path=file.getCanonicalPath()+File.separator+"test.dat";
		
		File subFile=new File(Path);
		if(!subFile.exists()){
			subFile.createNewFile();
			System.out.println("文件创建成功");
		}
	}

}

mkdirs

import java.io.File;

public class FileDemo3 {

	public static void main(String[] args) {
		String path="a"+File.separator+"b"+File.separator+"c"+File.separator+"d";
		File file=new File(path);
		if(!file.exists()){
			//mkdirs不同于mkdir 它可以创建不存在的上级目录
			if(file.mkdirs()){
			System.out.println("创建成功");}else{
				System.out.println("创建失败");
			}
		}

	}

}

delete

import java.io.File;

public class FileDemo4 {

	public static void main(String[] args) {
		/**
		 * 删除当前目录下的myfile.txt文件
		 */
		File f=new File("myfile.txt");
		if(f.exists()){
			if(f.delete()){
				System.out.println("删除成功");}else{
					System.out.println("删除失败");
				}
			}
		/**
		 * 删除当前目录下的dir目录
		 */
	File dir=new File("mydir");
	if(dir.exists()){
		if(dir.delete()){
			System.out.println("删除成功");}else{
				System.out.println("删除失败");
			}}
	/**
	 * 删除目录
	 * 注意:删除目录时,确保目录下没有任何子项,该目录才可以被成功删除
	 */
		}

	}

获取当前目录所有子项

import java.io.File;

public class FileDemo5 {

	public static void main(String[] args) {
	/**
	 * 获取当前目录下的所有内容
	 * 当前目录就是当前项目的根目录
	 */
		File f=new File(".");
		
		if(f.exists()&&f.isDirectory()){
			/**
			 * 获取当前目录下的所有子项
			 */
			File[] files=f.listFiles();
			//遍历所有子项
			for(File name:files){
//				if(name.isFile()){
//				System.out.println("文件:"+name.getName());}else{
//					System.out.println("目录:"+name.getName());
				System.out.println((name.isFile()?"文件:":"目录:")+name.getName());
				}
			String[] file=f.list();
			for(String s:file){
				System.out.println(s);
			}
			}
		
		}

	}

FileFilter文件过滤器
该接口用于指定对文件的过滤条件.
File.listFiles(FileFilter filter):重载方法.返回满足给定过滤器的条件的所有子项.
回调模式

import java.io.File;
import java.io.FileFilter;

/**
 * 获取目录下的部分子项
 * FileFilter文件过滤器
 * @author Administrator
 *
 */
public class TestFile6 {

	public static void main(String[] args) {
		/**
		 * 需求:当前项目目录下以"."开头的子项
		 */
		File dir=new File(".");
		FileFilter filter=new FileFilter(){

			public boolean accept(File file) {
				
				return file.getName().startsWith(".");
			}
			
		};
		/**
		 * 回调模式
		 * A调用B的方法,传入C,B的方法在运行的过程中会调用C的方法来完成工作,这个情况就是回调模式
		 */
		File[] subFiles=dir.listFiles(filter);
		for(File subFile:subFiles){
			System.out.println("子项:"+subFile.getName());
		}
	}

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值