(一) 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类的更多相关文章

  1. Java 输入/输出——File类

    File类是java.io包下代表与平台无关的文件和目录,也就是说,如果希望在程序中操作文件和目录,都可以通过File类来完成.值得指出的是,不管是文件还是目录都是使用File来操作的,File能新建 ...

  2. 第15章-输入/输出 --- 理解Java的IO流

    (一)理解Java的IO流 JAVA的IO流是实现输入/输出的基础,它可以方便地实现数据的输入/输出操作,在Java中把不同的输入/输出(键盘.文件.网络连接等)抽象表述为"流"( ...

  3. I/O(输入/输出)---File类

    File:表示文件与目录.用它来对文件或目录进行基本操作,它可以查出文件的基本相关信息,比如:名称.最后的修改日期.文件大小. 使用File类操作文件和目录属性步骤: 1.引入File类 import ...

  4. 输入和输出--File类

    输入和输出 写在前面的:Java中的输入和输出还是比较重要的,之前我都没想整理IO和多线程的,但是在研究后面的好多东西时候,经常要读取资源文件,这个时候就不得不回过头来整理IO了.要玩熟Java的输入 ...

  5. 第四章输入/输出(I/O)4.2PCL中I/O模块及类介绍

    PCL中I/O库提供了点云文件输入输出相关的操作类,并封装了OpenNI兼容的设备源数据获取接口,可直接从众多感知设备获取点云图像等数据.I/O模块利用21个类和28个函数实现了对点云的获取.读入.存 ...

  6. 【知识强化】第五章 输入/输出(I/O)管理 5.1 I/O管理概述

    这门课的最后一个章节——设备管理. 操作系统它作为系统资源的管理者,既需要对上层的软件进行管理,也需要对下层的硬件进行管理.操作系统它需要对处理机还有存储器这些硬件进行管理,但是这些硬件其实是在计算机 ...

  7. 【知识强化】第五章 输入/输出(I/O)管理 5.2 I/O核心子系统I

    学习I/O核心子系统相关的一系列功能. 设备独立性软件.设备驱动程序.中断处理程序这三层其实是属于操作系统的内核部分的,所以它们也称作“I/O核心子系统”,又可以简称为“I/O系统”.在考研当中我们需 ...

  8. 【C++ Primer 第15章】定义派生类析构函数

    学习资料 • 基类和派生类析构函数执行顺序 定义派生类析构函数 [注意]定义一个对象时先调用基类的构造函数.然后调用派生类的构造函数:析构的时候恰好相反:先调用派生类的析构函数.然后调用基类的析构函数 ...

  9. 【C++ Primer 第15章】定义派生类拷贝构造函数、赋值运算符

    学习资料 • 派生类的赋值运算符/赋值构造函数也必须处理它的基类成员的赋值 • C++ 基类构造函数带参数的继承方式及派生类的初始化 定义拷贝构造函数 [注意]对派生类进行拷贝构造时,如果想让基类的成 ...

随机推荐

  1. Android列表视图ListView和ListActivity-android学习之旅(二十四)

    ListView简介 ListView是android中常用的一种控件,创建ListView有两种方式: 1.在xml中使用ListView控件创建. 2.使用activity继承ListActivi ...

  2. 《java入门第一季》之集合框架TreeSet存储元素自然排序以及图解

    这一篇对TreeSet做介绍,先看一个简单的例子: * TreeSet:能够对元素按照某种规则进行排序.  * 排序有两种方式  * A:自然排序: 从小到大排序  * B:比较器排序    Comp ...

  3. Android开发-Listview中显示不同的视图布局

    1. 使用场景 在重写ListView的BaseAdapter时,我们常常在getView()方法中复用convertView,以提高性能.convertView在Item为单一的同种类型布局时,能够 ...

  4. Android图片色彩变幻

    最近在做图片相关的应用,所以就各方积累到一些常用的操作,一般来说会有多种方式来实现这一功能,比如 采用色度变换 采用ColorMatrix颜色矩阵 采用对像素点的直接操作 等等,今天就复习一下第一种方 ...

  5. android binder理解

    Android中的Parcel是什么  Parcel,翻译过来是"打包"的意思.打包干什么呢?是为了序列化.     如果要在进程之间传递一个整数,很简单,直接传就是行了:如果要传 ...

  6. (NO.00003)iOS游戏简单的机器人投射游戏成形记(二)

    打开Ai按需求依次绘制机器人身体,手臂和篮框: 因为是实验性质的游戏所以没必要在这上面花太多功夫,画出意思即可.虽然是2D游戏,但实际游戏中可以表现出伪3D的图形效果;尽管本猫这次画的游戏元素都是满满 ...

  7. 【Linux学习笔记】关于ubuntu开机菜单栏和任务栏不见了的有效解决方法

    (一) 问题描述 ubuntu开机只有桌面,没有菜单栏和任务栏,如下图: (二) 问题解决 刚学习ubuntu,总有些像我这样不折腾就不舒服的人,今天改了一下主题,图标什么的,重启开机后就发现!咦!我 ...

  8. Android4.0Sd卡移植之使用vold自动挂载sd卡

    在cap631平台上移植android4.0,发现内核驱动没有任何问题,能够读写,当总不能挂载. 后来发现是因为自动挂载需要vold的支持.vold程序负责检查内核的 sysfs 文件系统,发现有SD ...

  9. Invalid Subledger (XLA) Packages In Release 12.1.3

    In this Document   Goal   Solution   1.- Information about These Packages   2.- Solution   Reference ...

  10. C语言之将无符号字符型转化为ascii码值

    这个宏是在linux内核中获取的,主要的功能是能够将一个无符号字符型的参数转化为ASCII码值. ASCII : ASCII 编码里包括了128个字符.用 十进制 0  到 127 来表示 .那就对了 ...