Java IO之File 类详解
作者:YSOcean 发布时间:2023-08-07 20:02:12
File 类:文件和目录路径名的抽象表示。
注意:File 类只能操作文件的属性,文件的内容是不能操作的。
1、File 类的字段
我们知道,各个平台之间的路径分隔符是不一样的。
①、对于UNIX平台,绝对路径名的前缀始终为"/"
。 相对路径名没有前缀。 表示根目录的抽象路径名具有前缀"/"
和空名称序列。
②、对于Microsoft Windows平台,包含驱动器说明符的路径名的前缀由后面跟着":"
的驱动器号组成,如果路径名是绝对的,则可能后跟"\\"
。 UNC路径名的前缀为"\\\\"
; 主机名和共享名称是名称序列中的前两个名称没有有指定驱动器的相对路径名没有前缀。
那么为了屏蔽各个平台之间的分隔符差异,我们在构造 File 类的时候(如何构造,请看下面第二点),就可以使用上述 Java 为我们提供的字段。
那么我们可以看出:
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);
}
来源:https://www.cnblogs.com/ysocean/p/6851878.html


猜你喜欢
- 本文实例为大家分享了ftp实现文件上传下载的具体代码,供大家参考,具体内容如下package getUrlPic;import java.i
- C# 日历类的实现代码,具体如下所示:using System;namespace DotNet.Utilities{ ///
- 一、问题描述上周不是搭了个SpringBoot整合sharding-jdbc分库分表的架子么,组里老哥不让我把开发环境的配置文件放到reso
- 前言java 10 引进一种新的闪闪发光的特性叫做局部变量类型推断。听起来很高大上吧?它是什么呢? 下面的两个情景是我们作为 Java 开发
- 如何将ResultSet结果集遍历到List中今天在使用jstl标签展示查询结果时遇到一个小问题,即如何将ResultSet对象传递给前台页
- 本文实例讲述了C#实现对数组进行随机排序类。分享给大家供大家参考。具体如下:这个一个扩充C#随机数发生器的类,可以随机生成指定范围的数字,可
- 本文实例为大家分享了android自定义环形对比图的具体代码,供大家参考,具体内容如下1.首先在res/values里创建一个attr.xm
- 获取最新插入数据的id原始方法读取最后一条的插入数据,但这样会造成如果两条数据同时插入,会并发出现错误SELECT * FROM admin
- 一、国际惯例,先看下效果图二、不跟你多bb直接上布局文件代码<?xml version="1.0" encodin
- springboot读取配置文件到静态工具类通常我们读取配置文件可以用@Value注解和@Configuration,@Configurat
- 本文实例讲述了Java基于Tcp协议的socket编程方法,分享给大家供大家参考。具体分析如下:以下是一对一的通信编程实现,后续会继续学习一
- 第一步:下载需要添加的jar包可以在maven库中查找下载,也可以在对应官网下载maven库网址:https://mvnrepository
- 本文实例讲述了C#中派生类调用基类构造函数用法。分享给大家供大家参考。具体分析如下:这里的默认构造函数是指在没有编写构造函数的情况下系统默认
- Java 理解 ThreadLocal摘要: ThreadLocal 又名线程局部变量,是 Java 中一种较为特殊的线程绑定机制,用于保证
- Spring EL表达式语言,支持在XML和注解中表达式,类是于JSP的EL表达式语言。在Spring开发中经常涉及调用各种资源的情况,包含
- 1、实体类package com.yl.bean;import java.io.Serializable;import java.util.
- RocketMQ修改生产者消费者日志保存路径rocket默认是将所有日志文件保存到user.home的对于win系统就是C盘了。1.修改Ro
- Object是类层次结构的根,每个类都可以将Object作为超类。所有类都直接或者间接的继承自该类构造方法:public Object()回
- 这篇文章主要介绍了Java反射通过Getter方法获取对象VO的属性值过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定
- 在上一篇里已经向大家介绍了如何使用GDI+绘制简单的图像,这一片继续向大家介绍其它一些绘图知识.1.首先我们来看下上一片中我们使用过的Pen