(一) 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. 04 SimpleAdapter

    <span style="font-size:18px;">package com.fmyboke; import java.util.ArrayList; impor ...

  2. iOS中大流中的自定义cell 技术分享

    AppDelegate.m指定根视图 self.window.rootViewController = [[UINavigationController alloc] initWithRootView ...

  3. 百度地图API的学习

    我们可以进入百度API的网站学习百度地图API:http://dev.baidu.com/wiki/map/index.php,看完这些你应该基本上会掌握了,还有一些显示地图中一些很神奇的效果,需要一 ...

  4. pig强制转换(字符到整数):首位0怎么处理,‘01’到1的转化,

    pig支持的类型转换(cast) Pig Latin supports casts as shown in this table. from / to bag tuple map int long f ...

  5. Android项目-高考作文项目架构(二)

    1, 普通的http json请求 请看下面架构草图: 这样就抽象出了其他Activity可能需要的Http Json请求的功能. 只要其他Activity有Http Json请求的需求都可以继承Ba ...

  6. Cocos2D:塔防游戏制作之旅(五)

    打开HelloWorldLayer.h文件,添加以下实例变量(在@interface行的花括号之后): NSMutableArray *towerBases; 将HelloWorldLayer.m文件 ...

  7. Swift基础之实现下拉变大和OC下拉变大上拉缩小Demo

    Swift语言实现下拉变大效果:(上拉缩小效果随后研究......) 关键代码:方法一: self.automaticallyAdjustsScrollViewInsets = false;      ...

  8. 图文浅析Binder机制

    总述: Binder是Android系统提供的一种IPC机制,Android系统基本就可以看做基于Binder的C/S架构,Binder也是C/S形式出现,它属于驱动但是驱动的一段内存而不是设备,框架 ...

  9. 【翻译】在Ext JS应用程序中构建可维护的控制器

    原文:Building Maintainable Controllers in Ext JS Apps 你好You Had Me 你是Tearing Me Apart 模板We Dont Need t ...

  10. Leetcode_70_Climbing Stairs

    本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/41851705 You are climbing a sta ...