java IO——File 类详解

 

本篇博客学习内容

File 类概述

File 类构造方法

File 相关方法

访问文件名

目录操作相关

文件操作相关

文件检测

获取常规信息

文件名过滤器

文件过滤器


File 类概述

1. 凡是与输入、输出相关的类、接口等定义都在java.io包下
2. File 是一个类,可以有构造器创建其对象,此对象对应着一个文件(.txt  .avi  .doc  .ppt  .mp3  .jpg)
3. File 类的对象是与平台无关的。
4. File 中的方法,仅涉及到如何创建、删除、重命名等等,只要涉及文件内容的,File 是无能为力的,必须由 io 流来完成
5. File 类的对象常作为 io 的具体类的构造器的形参

File 类构造方法

File(String pathname);//pathname 文件路径
File(String parent, String child);//parent 父目录, child 子目录
File file1 = new File("C:/Users/Administrator/Desktop","file1.txt");
File file2 = new File("C:/Users/Administrator/Desktop/file2.txt");

 路径

绝对路径:包括盘符在内的完整文件路径

相对路径:相对于当前目录下的路径

File的静态属性String separator存储了当前系统的路径分隔符

UNIX中,此字段为‘/’,在Windows中,为‘\\’('/' 也可以)。

File 相关方法

访问文件名

访问文件名
方法 作用
getName() 返回文件或路径名的名称
gatPath() 返回此路径名的字符串
getAbsoluteFile() 返回抽象路径名的绝对路径形式
getAbsolutePath() 返回绝对路径
getParent() 返回此抽象路径名的父路径名的路径名字符串
renameTo(File newName) 重新命名此文件或目录
    /**
	 * 访问文件名
	 */
	@Test
	public void test3(){
		File file1 = new File("C:/Users/Administrator/Desktop/file/hello1.txt");
		File file3 = new File("C:/Users/Administrator/Desktop/file/hello2.txt");
		//File file2 = new File("C:/Users/Administrator/Desktop/file/io1");
		System.out.println(file1.getName());
		System.out.println(file1.getPath());
		System.out.println(file1.getAbsoluteFile());
		System.out.println(file1.getAbsolutePath());
		System.out.println(file1.getParent());
		file1.renameTo(file3);//给file1 重命名为file3 file1 一定存在,file3 一定不存在。
	}

结果

hello1.txt
C:\Users\Administrator\Desktop\file\hello1.txt
C:\Users\Administrator\Desktop\file\hello1.txt
C:\Users\Administrator\Desktop\file\hello1.txt
C:\Users\Administrator\Desktop\file

目录操作相关

目录操作相关
方法 作用
mkdir() 创建指定的目录
mkdirs() 创建指定的父目录,包括创建必须但不存在的父目录
llist() 返回当前目录下的文件和目录的字符串的数组
listFiles() 返回一个文件数组,包括当前目录下的文件和目录

mkdir() 将创建一个目录,但如果父目录不存在,则创建失败。

mkdirs()将创建一个目录,如果父目录不存在,则创建父目录以及子目录。

    /**
	 * 目录操作相关
	 */
	@Test
	public void test5(){
		File file4  = new File("C:/Users/Administrator/Desktop/file");
		//File file3 = new File("C:/Users/Administrator/Desktop/file/file3.txt");
		File file2 = new File("C:/Users/Administrator/Desktop/file/io3");
		File file1 = new File("C:/Users/Administrator/Desktop/file/io4/mkdir");
		System.out.println("创建目录 io3:"+file2.mkdir());//true
		System.out.println("创建目录io4/mkdir :"+file1.mkdir());//false
		System.out.println("//创建目录io4/mkdir:"+file1.mkdirs());//true
		String[] str = file4.list();
		for(String s : str){
			System.out.println(s);
		}
		System.out.println("===============");
		File[] file = file4.listFiles();
		for(File f : file){
			System.out.println(f.getName());
		}
	}

结果

创建目录 io3:true
创建目录io4/mkdir :false
//创建目录io4/mkdir:true
file3.txt
file4.txt
hah.txt
hello2.txt
io1
io2
io3
io4
===============
file3.txt
file4.txt
hah.txt
hello2.txt
io1
io2
io3
io4

文件操作相关

方法 作用
createNewFile() 创建这个文件
delete() 删除这个文件
    /**
	 * 文件操作相关
	 */
	@Test
	public void test1(){
		File file1 = new File("C:/Users/Administrator/Desktop/file/file1.txt");
		if(!file1.exists()){
			try {
				boolean b = file1.createNewFile();//创建这个文件
				System.out.println("创建是否成功:"+b);
			} catch (IOException e) {				
				e.printStackTrace();
			}
		}
		if(file1.exists()){
			boolean b = file1.delete();//删除这个文件
			System.out.println("删除是否成功:"+b);
		}
	}

结果:

创建是否成功:true
删除是否成功:true

文件检测

文件检测
方法 作用
exist() 文件是否存在
canWrite() 文件是否可写
canRead() 文件是否可读
isFile() 是否是文件
isDirectory() 是否是目录
    /**
	 * 文件检测
	 */
	@Test
	public void test2(){
		File file1 = new File("C:/Users/Administrator/Desktop/file/file1.txt");
		File file2 = new File("C:/Users/Administrator/Desktop/file/io1");
		System.out.println(file1.getName()+"是文件:"+file1.isFile());
		System.out.println(file1.getName()+"是目录:"+file1.isDirectory());
		System.out.println(file2.getName()+"是文件:"+file2.isFile());
		System.out.println(file2.getName()+"是目录:"+file2.isDirectory());
		System.out.println(file1.getName()+"可读:"+file1.canRead());
		System.out.println(file1.getName()+"可写:"+file1.canWrite());
		System.out.println(file2.getName()+"可读:"+file2.canRead());
		System.out.println(file2.getName()+"可写:"+file2.canWrite());
	}

结果

file1.txt是文件:false
file1.txt是目录:false
io1是文件:false
io1是目录:true
file1.txt可读:false
file1.txt可写:false
io1可读:true
io1可写:true

获取常规信息

方法 作用
lastModified() 返回最后一次修改时间
length() 返回文件长度
    /**
	 * 获取常规信息 
	 */
	@Test
	public void test4(){
		File file1 = new File("C:/Users/Administrator/Desktop/file/file3.txt");
		File file3 = new File("C:/Users/Administrator/Desktop/file/file4.txt");
		System.out.println(file1.getName()+":"+file1.lastModified());
		System.out.println(file3.getName()+":"+file3.lastModified());
		System.out.println(file1.getName()+":"+file1.length());
		System.out.println(file3.getName()+":"+file3.length());
	}

结果

file3.txt:1533365566506
file4.txt:1533362859896
file3.txt:12
file4.txt:0

文件名过滤器

/**
	 * 文件名过滤器
	 */
	@Test
	public void test8(){
		File file = new File("C:/Users/Administrator/Desktop/file");
		String[] str = file.list(new FilenameFilter(){
			/** 
             * dir 需要被过滤的文件夹 name 需要别被过滤的文  件名 .此名是相对路径
             * 如果返回true 则证明是符合条件的文件.会将改文件返回到数组中
             */
			@Override
			public boolean accept(File dir, String name) {
				File file1 = new File(dir,name);
				if(file1.isDirectory()){
					return false;
				}
				if(file1.getName().endsWith(".txt")){
					return true;
				}
				return false;
			}
			
		});
		for(String s : str){
			System.out.println(s);
		}
	}

结果

file3.txt
file4.txt
hah.txt
hello2.txt

文件过滤器

/**
	 * 文件过滤器
	 */
	public void test7(){
		File file = new File("C:/Users/Administrator/Desktop/file");
		 File[] fs = file.listFiles(new FileFilter() {
	            /**
	             * pathname 表示要被过滤的文件,注意:不是文件名
	             * 返ture 证明是符合条件的文件
	             */
	            @Override
	            public boolean accept(File pathname) {
	                if (pathname.length() > 500) {
	                    return true;
	                }
	                return false;
	            }
	        });  
		for(File f : fs){
			System.out.println(f.getAbsolutePath());
		}
	}

猜你喜欢

转载自blog.csdn.net/Alyson_jm/article/details/81429139