Java IO详解(一)------File 类

File 类:文件和目录路径名的抽象表示。

注意:File 类只能操作文件的属性,文件的内容是不能操作的。

1、File 类的字段

  我们知道,各个平台之间的路径分隔符是不一样的。

  ①、对于UNIX平台,绝对路径名的前缀始终为"/" 。 相对路径名没有前缀。 表示根目录的抽象路径名具有前缀"/"和空名称序列。

  ②、对于Microsoft Windows平台,包含驱动器说明符的路径名的前缀由后面跟着":"的驱动器号组成,如果路径名是绝对的,则可能后跟"\\" 。 UNC路径名的前缀为"\\\\" ; 主机名和共享名称是名称序列中的前两个名称              没有有指定驱动器的相对路径名没有前缀。

  那么为了屏蔽各个平台之间的分隔符差异,我们在构造 File 类的时候(如何构造,请看下面第二点),就可以使用上述 Java 为我们提供的字段。

System.out.println(File.separator);//输出 \   
		System.out.println(File.pathSeparator);//输出 ;

  那么我们可以看出:

File.pathSeparator指的是分隔连续多个路径字符串的分隔符

    File.separator是用来分隔同一个路径字符串中的目录的

2、File 类的构造方法

如何使用上述构造方法,请看如下例子:

//不使用 Java 提供的分隔符字段,注意:这样写只能在 Windows 平台有效
		File f1 = new File("D:\\IO\\a.txt");
		//使用 Java 提供的分隔符
		File f2 = new File("D:"+File.separator+"IO"+File.separator+"a.txt");
		System.out.println(f1);//输出 D:\IO\a.txt   
		System.out.println(f2);//输出 D:\IO\a.txt
		
		//File(File parent, String child) 
		//从父抽象路径名和子路径名字符串创建新的 File实例。
		File f3 = new File("D:");
		File f4 = new File(f3,"IO");
		System.out.println(f4); //D:\IO
		
		//File(String pathname) 
		//通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例。 
		File f5 = new File("D:"+File.separator+"IO"+File.separator+"a.txt");
		System.out.println(f5); //D:\IO\a.txt
		
		//File(String parent, String child) 
		//从父路径名字符串和子路径名字符串创建新的 File实例。 
		File f6 = new File("D:","IO\\a.txt");
		System.out.println(f6); //D:\IO\a.txt

3、File 类的常用方法

  ①、创建方法

    1.boolean createNewFile() 不存在返回true 存在返回false     2.boolean mkdir() 创建目录,如果上一级目录不存在,则会创建失败     3.boolean mkdirs() 创建多级目录,如果上一级目录不存在也会自动创建

  ②、删除方法

    1.boolean delete() 删除文件或目录,如果表示目录,则目录下必须为空才能删除     2.boolean deleteOnExit() 文件使用完成后删除

  ③、判断方法

    1.boolean canExecute()判断文件是否可执行     2.boolean canRead()判断文件是否可读     3.boolean canWrite() 判断文件是否可写     4.boolean exists() 判断文件或目录是否存在     5.boolean isDirectory()  判断此路径是否为一个目录     6.boolean isFile()  判断是否为一个文件     7.boolean isHidden()  判断是否为隐藏文件     8.boolean isAbsolute()判断是否是绝对路径 文件不存在也能判断

   ④、获取方法

    1.String getName() 获取此路径表示的文件或目录名称     2.String getPath() 将此路径名转换为路径名字符串     3.String getAbsolutePath() 返回此抽象路径名的绝对形式     4.String getParent()//如果没有父目录返回null     5.long lastModified()//获取最后一次修改的时间     6.long length() 返回由此抽象路径名表示的文件的长度。     7.boolean renameTo(File f) 重命名由此抽象路径名表示的文件。     8.File[] liseRoots()//获取机器盘符     9.String[] list()  返回一个字符串数组,命名由此抽象路径名表示的目录中的文件和目录。     10.String[] list(FilenameFilter filter) 返回一个字符串数组,命名由此抽象路径名表示的目录中满足指定过滤器的文件和目录。

//File(File parent, String child) 
		//从父抽象路径名和子路径名字符串创建新的 File实例。
		File dir = new File("D:"+File.separator+"IO");
		File file = new File(dir,"a.txt");
		
		//判断dir 是否存在且表示一个目录
		if(!(dir.exists()||dir.isDirectory())){
			//如果 dir 不存在,则创建这个目录
			dir.mkdirs();
			//根据目录和文件名,创建 a.txt文件
			file.createNewFile();

		}
		//返回由此抽象路径名表示的文件或目录的名称。 这只是路径名称序列中的最后一个名字。 如果路径名的名称序列为空,则返回空字符串。
		System.out.println(file.getName()); //a.txt
		//返回此抽象路径名的父null的路径名字符串,如果此路径名未命名为父目录,则返回null。
		System.out.println(file.getParent());//D:\IO
		//将此抽象路径名转换为路径名字符串。 结果字符串使用default name-separator character以名称顺序分隔名称。
		System.out.println(file.getPath()); //D:\IO\a.txt

4、File 的一些技巧

  ①、打印给定目录下的所有文件夹和文件夹里面的内容 

public static void getFileList(File file){
		//第一级子目录
		File[] files = file.listFiles();
		for(File f:files){
			//打印目录和文件
			System.out.println(f);
			if(f.isDirectory()){
				getFileList(f);
			}
		}
	}

  测试:

public static void main(String[] args) throws Exception {
		File f = new File("D:"+File.separator+"WebStormFile");
		getFileList(f);
	}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏魏琼东

一步一步教你使用AgileEAS.NET基础类库进行应用开发-基础篇-通过SQL实现特殊业务

          前面的四篇文章演示ORM的一些常规操作与配置,通过前面的文章,应用开发人员要可以使用ORM开发出简单的应用,但是,ORM也不是万能钥匙,在业...

1969
来自专栏Java学习之路

Struts2学习---基本配置,action,动态方法调用,action接收参数 动态方法调用action接收参数

首先我们先来直接配置,然后再来讲原理: 第一步:jar包的引入: 我们可以到struts2的官网上下载: http://struts.apache.org...

2787
来自专栏开发技术

spring-boot-2.0.3不一样系列之源码篇 - SpringApplication的run方法(一)之SpringApplicationRunListener,绝对有值得你看的地方

  Springboot启动源码系列还只写了一篇,已经过去一周,又到了每周一更的时间了(是不是很熟悉?),大家有没有很期待了?我会尽量保证启动源码系列每周一更,...

1012
来自专栏青枫的专栏

动态代理详解

动态代理它可以直接给某一个目标对象生成一个代理对象,而不需要代理类存在。     动态代理与代理模式原理是一样的,只是它没有具体的代理类,直接通过反射生成了一...

642
来自专栏JavaEE

java基础知识02

1、String字符串: 字符串一旦被初始化,就不可以被改变,存放在方法区中的常量池中。用length()方法获取长度。

472
来自专栏上善若水

s003android逆向安全初级篇之apk smali语法之实例分析

.locals 0指明本有本地变量。于是以上三个形参分别对应的寄存器代号为p0,p1,p2

572
来自专栏Python

Flask-SQLAlchemy

一.SQLAlchemy介绍 SQLAlchemy是一个基于Python实现的ORM框架。该框架建立在 DB API之上,使用关系对象映射进行数据库操作,简言之...

7989
来自专栏Python研发

pymysql

pymsql是python中操作的MYsql的模块,其使用方法和MySQLdb几乎相同

944
来自专栏扎心了老铁

python使用装饰器@函数式化django开发

django是一个python web开发的框架。作为一个框架MVC的架构已经实现起来了。但是编码的时候你经常要进行进一步的抽象。 AOP是一种称为面向切面的开...

5027
来自专栏技术与生活

Annotation 使用案例

Java 的 annotation 自 JDK1.5就拥有了,主要作用就是给代码打标注,这个系列文章将从头到尾进行一个梳理,当然不仅仅是 Annotation,...

611

扫码关注云+社区