第15章-输入/输出 --- File类
(一) Java的IO通过java.io包下的类和接口来支持,在java.io包下主要包括输入、输出两种IO流。
每种输入、输出流又分为字节流和字符流两大类:
(1)字节流以字节为单位来处理输入、输出操作
(2)字符流则以字符来处理输入、输出操作
除此之外,Java的IO流使用了一种装饰器设计模式,它将IO流分成底层节点流和上层处理流,其中节点流用于和底层的物理存储节点之间关联---不同的物理节点获取节点流的方式可能存在一定的差异,但程序可以把不同的物理节点流包装成统一的处理流,从而允许程序使用统一的输入、输出代码来读取不同的物理存储节点的资源。
(二)File类
File类是java.io包下代表与平台无关的文件和目录,如果系统程序操作文件和目录都可以通过File类来完成。但是File不能访问文件内容本身,如果需要访问文件内容本身,则需要使用输入/输出流。
(三)访问文件和目录
File类提供了很多方法来操作文件和目录:
1.访问文件名相关的方法:
a. String getName():返回此File对象所表示的文件名或路径名
b. String getPath():返回此File对象所对应的路径名
c. File getAbsoluteFile(): 返回此File对象所对应的绝对路径所对应的File对象
d. String getParent():返回此File对象所对应目录的父目录名
e. boolean rename(File newName):重命名此File对象所对应的文件或目录,如果重命名成功,则返回true,否则返回false
2. 文件检测相关的方法
a. boolean exists():判断File对象所对应的文件或目录是否存在
b. boolean canWrite():判断File对象所对应的文件盒目录是否可写
c. boolean canRead():判断File对象所对应的文件盒目录是否可读
d. boolean isFile():判断File对象所对应的是否是文件,而不是目录
e. boolean isDirectory():判断File对象所对应的是否是目录,而不是文件
f. boolean isAbsolete():判断File对象所对应的文件或目录是否是绝对路径。
3. 获取常规文件信息
a. long lastModified():返回文件的最后修改时间
b. long length():返回文件内容的长度
4. 文件操作相关的方法
a. boolean createNewFile(): 当此File对象所对应的文件不存在时,该方法将新建一个该File对象所指定的新文件,如果创建成功则返回true;否则返回false.
b. boolean delete():删除File对象所对应的文件或路径
5. 目录操作相关的方法
a. boolean mkdir():试图创建一个File对象所对应的目录,如果创建成功,则返回true;否则返回false。调用该方法时File对象必须对应一个路径,而不是一个文件。
b. String[] list():列出File对象的所有子文件名和路径名,返回String数组。
c. File[] listFiles():列出File对象的所有子文件和路径,返回File数组。
d. static File[] listRoots(): 列出系统所有的根路径。
下面举例说明下:

import java.io.File;
import java.io.IOException; public class FileTest
{
public static void main(String[] args) throws IOException
{
//以当前路径来创建一个File对象
File file = new File("."); //直接获取文件名,输出一点
System.out.println(file.getName()); //获取相对路径的父路径可能出错,下面代码输出null
System.out.println(file.getParent()); //获取绝对路径
System.out.println(file.getAbsoluteFile()); //获取上一级路径
System.out.println(file.getAbsoluteFile().getParent()); //在当前路径下创建一个临时文件
File tmpFile = File.createTempFile("aaa", ".txt",file); //指定当JVM退出时删除该文件
tmpFile.deleteOnExit(); //以系统当前时间作为新文件名来创建新文件
File newFile = new File(System.currentTimeMillis() + "");
System.out.println("newFile对象是否存在 : " + newFile.exists()); //以指定newFile对象来创建一个文件
newFile.createNewFile(); //使用list()方法列出当前路径下的所有文件和路径
String[] fileList = file.list();
System.out.println("=====当前路径下所有文件和路径如下=====");
for(String fileName : fileList)
{
System.out.println(fileName);
} //listRoots()静态方法列出所有的磁盘根路径
File[] roots = file.listRoots();
System.out.println("=======系统所有根路径如下=======");
for(File root : roots)
{
System.out.println(root);
}
}
}

运行结果:

.
null
H:\OhMyGod\Test\.
H:\OhMyGod\Test
newFile对象是否存在 : false
=====当前路径下所有文件和路径如下=====
.classpath
.project
.settings
1390727504600
aaa1644796813208724263.txt
aaa6169179965396772881.txt
bin
out.txt
props.txt
src
text.txt
=======系统所有根路径如下=======
C:\
D:\
E:\
G:\
H:\
I:\
J:\
K:\
L:\
M:\

(四)文件过滤器
在File类的list()方法中可以接收一个FilenameFilter参数,通过该参数可以只列出符合条件的文件。
FilenameFilter接口里包含了一个accept(File dir,String name)方法,该方法将依次对指定File的所有子目录或者文件进行迭代,如果该方法返回true,则list()方法会列出该子目录或者文件。
举例:

import java.io.File;
import java.io.FilenameFilter; public class FilenameFilterTest
{
public static void main(String[] args)
{
File file = new File(".");
String[] nameList = file.list(new MyFilenameFilter()); for(String name : nameList)
{
System.out.println(name);
}
}
} //实现自己的FilenameFilter实现类
class MyFilenameFilter implements FilenameFilter
{
@Override
public boolean accept(File dir, String name)
{
return name.endsWith(".java") || new File(name).isDirectory();
}
}
第15章-输入/输出 --- File类的更多相关文章
- Java 输入/输出——File类
File类是java.io包下代表与平台无关的文件和目录,也就是说,如果希望在程序中操作文件和目录,都可以通过File类来完成.值得指出的是,不管是文件还是目录都是使用File来操作的,File能新建 ...
- 第15章-输入/输出 --- 理解Java的IO流
(一)理解Java的IO流 JAVA的IO流是实现输入/输出的基础,它可以方便地实现数据的输入/输出操作,在Java中把不同的输入/输出(键盘.文件.网络连接等)抽象表述为"流"( ...
- I/O(输入/输出)---File类
File:表示文件与目录.用它来对文件或目录进行基本操作,它可以查出文件的基本相关信息,比如:名称.最后的修改日期.文件大小. 使用File类操作文件和目录属性步骤: 1.引入File类 import ...
- 输入和输出--File类
输入和输出 写在前面的:Java中的输入和输出还是比较重要的,之前我都没想整理IO和多线程的,但是在研究后面的好多东西时候,经常要读取资源文件,这个时候就不得不回过头来整理IO了.要玩熟Java的输入 ...
- 第四章输入/输出(I/O)4.2PCL中I/O模块及类介绍
PCL中I/O库提供了点云文件输入输出相关的操作类,并封装了OpenNI兼容的设备源数据获取接口,可直接从众多感知设备获取点云图像等数据.I/O模块利用21个类和28个函数实现了对点云的获取.读入.存 ...
- 【知识强化】第五章 输入/输出(I/O)管理 5.1 I/O管理概述
这门课的最后一个章节——设备管理. 操作系统它作为系统资源的管理者,既需要对上层的软件进行管理,也需要对下层的硬件进行管理.操作系统它需要对处理机还有存储器这些硬件进行管理,但是这些硬件其实是在计算机 ...
- 【知识强化】第五章 输入/输出(I/O)管理 5.2 I/O核心子系统I
学习I/O核心子系统相关的一系列功能. 设备独立性软件.设备驱动程序.中断处理程序这三层其实是属于操作系统的内核部分的,所以它们也称作“I/O核心子系统”,又可以简称为“I/O系统”.在考研当中我们需 ...
- 【C++ Primer 第15章】定义派生类析构函数
学习资料 • 基类和派生类析构函数执行顺序 定义派生类析构函数 [注意]定义一个对象时先调用基类的构造函数.然后调用派生类的构造函数:析构的时候恰好相反:先调用派生类的析构函数.然后调用基类的析构函数 ...
- 【C++ Primer 第15章】定义派生类拷贝构造函数、赋值运算符
学习资料 • 派生类的赋值运算符/赋值构造函数也必须处理它的基类成员的赋值 • C++ 基类构造函数带参数的继承方式及派生类的初始化 定义拷贝构造函数 [注意]对派生类进行拷贝构造时,如果想让基类的成 ...
随机推荐
- Android列表视图ListView和ListActivity-android学习之旅(二十四)
ListView简介 ListView是android中常用的一种控件,创建ListView有两种方式: 1.在xml中使用ListView控件创建. 2.使用activity继承ListActivi ...
- 《java入门第一季》之集合框架TreeSet存储元素自然排序以及图解
这一篇对TreeSet做介绍,先看一个简单的例子: * TreeSet:能够对元素按照某种规则进行排序. * 排序有两种方式 * A:自然排序: 从小到大排序 * B:比较器排序 Comp ...
- Android开发-Listview中显示不同的视图布局
1. 使用场景 在重写ListView的BaseAdapter时,我们常常在getView()方法中复用convertView,以提高性能.convertView在Item为单一的同种类型布局时,能够 ...
- Android图片色彩变幻
最近在做图片相关的应用,所以就各方积累到一些常用的操作,一般来说会有多种方式来实现这一功能,比如 采用色度变换 采用ColorMatrix颜色矩阵 采用对像素点的直接操作 等等,今天就复习一下第一种方 ...
- android binder理解
Android中的Parcel是什么 Parcel,翻译过来是"打包"的意思.打包干什么呢?是为了序列化. 如果要在进程之间传递一个整数,很简单,直接传就是行了:如果要传 ...
- (NO.00003)iOS游戏简单的机器人投射游戏成形记(二)
打开Ai按需求依次绘制机器人身体,手臂和篮框: 因为是实验性质的游戏所以没必要在这上面花太多功夫,画出意思即可.虽然是2D游戏,但实际游戏中可以表现出伪3D的图形效果;尽管本猫这次画的游戏元素都是满满 ...
- 【Linux学习笔记】关于ubuntu开机菜单栏和任务栏不见了的有效解决方法
(一) 问题描述 ubuntu开机只有桌面,没有菜单栏和任务栏,如下图: (二) 问题解决 刚学习ubuntu,总有些像我这样不折腾就不舒服的人,今天改了一下主题,图标什么的,重启开机后就发现!咦!我 ...
- Android4.0Sd卡移植之使用vold自动挂载sd卡
在cap631平台上移植android4.0,发现内核驱动没有任何问题,能够读写,当总不能挂载. 后来发现是因为自动挂载需要vold的支持.vold程序负责检查内核的 sysfs 文件系统,发现有SD ...
- Invalid Subledger (XLA) Packages In Release 12.1.3
In this Document Goal Solution 1.- Information about These Packages 2.- Solution Reference ...
- C语言之将无符号字符型转化为ascii码值
这个宏是在linux内核中获取的,主要的功能是能够将一个无符号字符型的参数转化为ASCII码值. ASCII : ASCII 编码里包括了128个字符.用 十进制 0 到 127 来表示 .那就对了 ...