【JavaSE】day07_File

1.File

1) java.io.File

* 该类用于描述文件系统中的一个文件或目录。

* File可以访问文件或目录的属性信息。 File可以操作文件或目录。 File可以查看一个目录有哪些子项。

* File不能访问文件内容!

2)String getName()

---获取文件名

3)long length()

---获取文件大小(文件占用的字节量)

4)boolean exists()

---判断当前File表示的文件或目录是否在硬盘中已经存在。

5)boolean lastModified()

---获取最后的修改时间 1970年元旦到这一刻的毫秒差。还不存在的文件的最后修改时间为0。

具体细节见代码:

package day01;

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

/**
 * java.io.File
 * 该类用于描述文件系统中的一个文件或目录。
 * File可以访问文件或目录的属性信息。
 * File可以操作文件或目录。
 * File可以查看一个目录有哪些子项。
 *
 * File不能访问文件内容!
 */
public class FileDemo1 {
	public static void main(String[] args) {
		/*
		 * 描述目录时应当注意两点:
		 * 1:尽量不用绝对路径,因为不同操作系统有差异。
		 * 2:目录的层级分割符不要直接写“/”或“\”,,因为
		 *    不同系统也有差异,所以使用File的常量:
		 *    File.separator就可以了。
		 */
		// "/home/soft01/myworkspace/Mycode003_SE02/demo.txt"
		File file = new File("."+File.separator+"demo.txt");//.表示当前目录,项目所在目录

		/*
		 * 获取文件名
		 */
		String name = file.getName();
		System.out.println("文件名:"+name);

		/*
		 * 获取文件大小(文件占用的字节量)
		 */
		long length = file.length();
		System.out.println("文件大小:"+length);

		/*
		 * 判断当前File表示的文件或目录是否在硬盘中已经存在。
		 */
		boolean exits = file.exists();
		System.out.println("已存在:"+exits);

		/*
		 * 获取最后的修改时间 1970年元旦到这一刻的毫秒差。
		 * 还不存在的文件的最后修改时间为0。
		 */
		long dateTime = file.lastModified();
		System.out.println(dateTime);
		Date date = new Date(dateTime);
		System.out.println(date);
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy年M月d日 HH:mm:ss");
		String dateStr = sdf.format(date);
		System.out.println(dateStr);

		//是否是隐藏文件
		boolean isHidden = file.isHidden();

		//是否可读
		boolean canRead = file.canRead();

		//是否可写
		boolean canWrite = file.canWrite();

		//是否可运行
		boolean canExecute = file.canExecute();

		//是否是文件
		boolean isFile = file.isFile();

		//是否是目录
		boolean isDir = file.isDirectory();

		System.out.println(isHidden+","+canRead+","+canWrite+","+canExecute+","+isFile+","+isDir);

	}

}

6)boolean createNewFile()

---创建新文件

代码:

package day01;

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

/**
 * 使用File创建一个新文件
 */
public class FileDemo2 {
	public static void main(String[] args) throws IOException {
		/*
		 * 在当前目录根目录下创建文件:test.txt
		 * 若直接书写文件名,默认就在当前目录下,所以“./"是可以忽略不写的。
		 */
		File file = new File("test.txt");
		if(!file.exists()){
			//创建当前文件(如果文件已存在,则不再创建)
			file.createNewFile();
			System.out.println("文件创建成功");
		}
		//file.createNewFile();
		//System.out.println("111");

	}

}

7)boolean delete()

---删除一个现有的文件

代码:

package day01;

import java.io.File;

/**
 * 删除一个现有的文件
 */
public class FileDemo3 {
	public static void main(String[] args) {
		/*
		 * 删除当前目录中的test.txt文件
		 */
		File file = new File("test.txt");
		if(file.exists()){
			boolean b1 = file.delete();
			System.out.println(b1+"删除完毕");
		}

	}

}

8)boolean mkdir()

---创建一个目录

代码:

package day01;

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

/**
 * 创建一个目录
 */
public class FileDemo4 {
	public static void main(String[] args) throws IOException {
		/*
		 * 在当前目录下创建目录demo
		 */
		File dir = new File("demo");
		if(!dir.exists()){
			dir.mkdir();
			System.out.println("创建目录成功!");
		}
		File file1 = new File(".");
		System.out.println(file1.length());
		//删除目录
		//dir.delete();
	}

}

9)boolean mkdirs()

---创建一个多级目录

package day01;

import java.io.File;

/**
 * 创建一个多级目录
 *
 */
public class FileDemo5 {
	public static void main(String[] args) {
		/*
		 * 在当前项目根目录下创建目录:
		 * a/b/c
		 */
		File dirs = new File("a/b/c/d/e/f");
		if(!dirs.exists()){
			dirs.mkdirs();
			System.out.println("创建完毕!");
		}
		//dirs.delete();

	}

}

10)递归删除多级目录

代码:

package day01;

import java.io.File;

/**
 * 删除多级目录
 * 当删除一个含有子项的目录时,直接使用delete方法是删除不成功的,
 * 需要先将该目录中的所有子项删除以后,该目录才可以成功删除。
 *
 */
public class FileDemo6 {
	public static void main(String[] args) {
		/*
		 * 删除当前目录中的a目录
		 */
		File dir = new File("a");
		deleteFile(dir);
	}

	public static void deleteFile1(File file){
		if(!file.exists()){
			return ;
		}
		if(file.isFile()){
			file.delete();
			return ;
		}
		File[] subs = file.listFiles();
		for(File f : subs){
			deleteFile(f);
		}
		file.delete();
		//return ;
	}

	public static void deleteFile(File file){
		if(file.isDirectory()){
			File[] sub = file.listFiles();
			for(File f : sub){
				deleteFile(f);
			}
		}
		file.delete();
	}

}

11)File[] listFiles()

---该方法获取当前目录下的所有子项,由于一个目录下包含的无非还是文件或者目录,那么都可以用一个File对象表示。所以获取一个目录里面所有子项就等于获取了若干File对象,每一个表示其中一个子项。

代码:

package day01;

import java.io.File;

/**
 * 获取一个目录下的所有子项
 *
 */
public class FileDemo7 {
	public static void main(String[] args) {
		/*
		 * 获取当前项目根目录下的所有子项
		 */
		File file = new File(".");

		/*
		 * File[] listFiles()
		 * 该方法获取当前目录下的所有子项,由于一个目录下
		 * 包含的无非还是文件或者目录,那么都可以用一个File
		 * 对象表示。所以获取一个目录里面所有子项就等于获取
		 * 了若干File对象,每一个表示其中一个子项。
		 */
		File[] files = file.listFiles();
		for(File f : files){

			if(f.isDirectory()){
				//判断当前File表示的是否为一个文件
				System.out.print("目录:");
			}else if(f.isFile()){
				//判断当前File表示的是否为一个目录
				System.out.print("文件:");
			}
			System.out.println(f.getName());
		}

	}

}

12)FileFilter文件过滤器

代码:

package day01;

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

/**
 * FileFilter文件过滤器
 *
 * File有一个重载的listFiles方法,允许我们传入一个
 * 文件过滤器,并将满足过滤器要求的子项返回。不满足则忽略。
 *
 */
public class FileDemo8 {
	public static void main(String[] args) {
		/*
		 * 获取当前目录下名字以“.”开头的文件或目录。
		 */

		FileFilter filter = new FileFilter(){
			/**
			 * 过滤器过滤条件:
			 * 当给定的file对象满足要求,返回true即可。
			 */
			public boolean accept(File file) {
				return file.getName().startsWith(".");
			}
		};

		File file = new File(".");
		/*
		 * 获取满足给定过滤器要求的所有子项。
		 */
		File[] sub = file.listFiles(filter);
		for(File f : sub){
			System.out.println(f.getName());
		}

	}
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-12-25 15:16:22

【JavaSE】day07_File的相关文章

【JavaSE】day11_Reader和Writer_PrintWriter_BufferedReader

[JavaSE]day11_Reader和Writer_PrintWriter 1.Reader和Writer 1)Writer,Reader 字符输出,输入流的父类. * 字符流特点:以字符为单位读写数据. * 字符流只能读写文本数据.所以不要用字符流读取非文本文件. * 字符流只是简化了我们对于字符串的读写操作不用自行在字节与字符之间转换. * 所以字符流都是高级流,底层本质还是要用字节读写数据. 2)OutputStreamWriter 按照给定的字符集,将字符串转换为一组字节后写出. 代

【JavaSE】类与类的关系--UML

类(对象/接口)之间的关系 -- UML类图展现 2019-07-14  14:37:19  by冲冲 在面向对象程序设计时,类与类之间的关系主要分为:继承,实现,依赖,关联,聚合,组合等6种关系. 各种关系的强弱顺序:泛化 = 实现 > 组合 > 聚集 > 关联 > 依赖 .其中前两种理解很简单,重点是比较容易混淆的后四种. 1. 继承 -- "a is kind of A" 继承(Generalization):亦称泛化,表示一般与特殊的关系.继承指的是一个

【javaSE】Java泛型机制

************************************************************************   ****原文:blog.csdn.net/clark_xu 徐长亮的专栏 ************************************************************************ Java泛型机制 泛型是JavaSE5 引入的特性,泛型的本质是参数化类型.应用场景:在类,接口和方法的定义过程中,所操作的数据类

【JavaSE】day08_RandomAccessFile

1)java.io.RandomAccessFile * 该类用于读写文件数据. * 创建该类有两种模式: * 1:只读(r),对文件仅进行读取操作 * 2:读写(rw),对文件数据读写 2)常用构造方法: * RandomAccessFile(File file,String mode) * RandomAccessFile(String path,String mode) 3)void write(int i) * 该方法向文件中写出一个字节,即8位的二进制 * 写的是该int值的二进制形式

【JavaSE】day09_节点流和高级流

1.FileOutputStream 1)java.io.FileOutputStream * 文件的字节输出流,用于向文件中写出字节.是一个低级流. 2)默认创建的FOS是覆盖写操作. * 该覆盖操作是在写内容前将原文件所有数据清除,然后重新写入新内容. 3)还支持一个重载的构造方法,第二个参数传入一个boolean值,若该值为true,则是追加写操作, * 即:通过该流写出的数据会在当前文件的末尾写入. 而不是将原来的数据都清除. 具体实现见代码: package day02; import

【JavaSE】day04_Collection_Iterator_新循环_泛型

1.Collection集合的批量操作 1)boolean addAll(Collection c) 将给定的集合中的所有元素添加到当前集合中. 当执行完毕后,当前集合中的元素发生改变则返回true. 2)boolean containsAll(Collection c) 判断当前集合中是否包含给定集合里的所有元素,全部包含则返回true. 这里判断的依据依然是依靠元素的equals比较的. 代码演示: package day04; import java.util.ArrayList; imp

【JavaSE】day01_ API文档 、 字符串基本操作

--20150820 1.String及其常用API 1)java中String对象为不可变对象,一旦在内存中创建,内容不能发生变化,若要对字符串内容改变,那么就会创建新对象.这样做的目的是可以最大程度的重用相同内容的字符串以减小系统资源的开销. 2)String常量池 当我们通过字面量,常量来初始化一个字符串时,JVM首先会从字符串的常量池(一个JVM内部维护的内存区域,用来保存已经创建过的字符串对象)中查询用来保存该字符串的对象是否存在,若存在则直接引用,若不存在则创建该字符串对象并存入常量

【JavaSE】day05_List集合_List排序_队列和栈

1.List集合 1)有序集,可重复集.List的特点是可以像数组一样,根据下标操作元素.所以List提供了一些独有的方法. 2)常用实现类: --ArrayList:内部由数组实现,查询快. --LinkedList:内部由链表实现,增删快. 3)E get(int index) 获取指定下标对应的元素.(下标从0开始) 4)E set(int index,E e) 将给定的元素设置到指定的位置上,返回值为原位置上的元素.所以该操作是替换元素操作. 注:需在现有的元素上进行操作. 代码演示:

【JavaSE】day05_Map接口_HashMap_hashCode

1.Map接口 1)java.util.Map Map看起来像是一个多行两列的表格.每条记录分为两部分:key,value. 其中在一个Map中key是不允许重复的(equals比较) 2)常用实现类:java.util.HashMap(散列算法实现) java.util.TreeMap(二叉树实现) 3)V put(K k,V v) 将给定的key与value存入到Map中.由于Map中key不允许重复,所以会出现两种情况: * 1:存入的key在Map中还不存在,那么直接将这对key-val