一、File类

在 Java 中,File 类是 java.io 包中唯一代表磁盘文件本身的对象,也就是说,如果希望在程序中操作文件和目录,则都可以通过 File 类来完成。File 类定义了一些方法来操作文件,如新建、删除、重命名文件和目录等。

File 类不能访问文件内容本身,如果需要访问文件内容本身,则需要使用输入/输出流。

File 类提供了如下三种形式构造方法。

  1. File(String path):如果 path 是实际存在的路径,则该 File 对象表示的是目录;如果 path 是文件名,则该 File 对象表示的是文件。
  2. File(String path, String name):path 是路径名,name 是文件名。
  3. File(File dir, String name):dir 是路径对象,name 是文件名。

表1 File 类的常用方法及说明

方法名称 说明
boolean canRead() 测试应用程序是否能从指定的文件中进行读取
boolean canWrite() 测试应用程序是否能写当前文件
boolean delete() 删除当前对象指定的文件
boolean exists() 测试当前 File 是否存在
String getAbsolutePath() 返回由该对象表示的文件的绝对路径名
String getName() 返回表示当前对象的文件名或路径名(如果是路径,则返回最后一级子路径名)
String getParent() 返回当前 File 对象所对应目录(最后一级子目录)的父目录名
boolean isAbsolute() 测试当前 File 对象表示的文件是否为一个绝对路径名。该方法消除了不同平台的差异,可以直接判断 file 对象是否为绝对路径。在 UNIX/Linux/BSD 等系统上,如果路径名开头是一条斜线/,则表明该 File 对象对应一个绝对路径;在 Windows 等系统上,如果路径开头是盘符,则说明它是一个绝对路径。
boolean isDirectory() 测试当前 File 对象表示的文件是否为一个路径
boolean isFile() 测试当前 File 对象表示的文件是否为一个“普通”文件
long lastModified() 返回当前 File 对象表示的文件最后修改的时间
long length() 返回当前 File 对象表示的文件长度
String[] list() 返回当前 File 对象指定的路径文件列表
String[] list(FilenameFilter) 返回当前 File 对象指定的目录中满足指定过滤器的文件列表
boolean mkdir() 创建一个目录,它的路径名由当前 File 对象指定
boolean mkdirs() 创建一个目录,它的路径名由当前 File 对象指定
boolean renameTo(File) 将当前 File 对象指定的文件更名为给定参数 File 指定的路径名

1、获取文件属性

在 Java 中获取文件属性信息的第一步是先创建一个 File 类对象并指向一个已存在的文件, 然后调用表 1 中的方法进行操作。

示例代码:

public class FileInformation {public static void main(String[] args) {File file = new File("e:\\new.txt");System.out.println("文件名:"+file.getName());System.out.println("绝对路径:"+file.getAbsolutePath());System.out.println("父级目录:"+file.getParent());System.out.println("文件大小(字节):"+file.length());System.out.println("文件是否存在:"+file.exists());System.out.println("文件是否是目录:"+file.isDirectory());}
}

2、创建和删除文件

File 类不仅可以获取已知文件的属性信息,还可以在指定路径创建文件,以及删除一个文件。创建文件需要调用 createNewFile() 方法,删除文件需要调用 delete() 方法。无论是创建还是删除文件通常都先调用 exists() 方法判断文件是否存在。

示例代码:

public class Test {public static void main(String[] args) throws IOException {String path = "C:" + File.separator + "test.txt"; // 拼凑出可以适应操作系统的路径File f = new File(path);if (f.exists()) // 判断文件是否存在{f.delete(); // 存在则先删除}f.createNewFile(); // 再创建}
}

注意:在Windows下的路径分隔符和Linux下的路径分隔符是不一样的,Windows 中使用反斜杠\表示目录的分隔符,Linux 中使用正斜杠/表示目录的分隔符。在操作文件时可以使用常量字符串 File.separator 表示分隔符。

3、创建和删除目录

File 类除了对文件的创建和删除外,还可以创建和删除目录。创建目录需要调用 mkdir() 方法(多级目录使用mkdirs()方法),删除目录需要调用 delete() 方法。无论是创建还是删除目录都可以调用 exists() 方法判断目录是否存在。

示例代码:

public class Directory_ {//java中目录可以当做文件看待@Testpublic void m1() {String filePath = "e:\\demo";File file = new File(filePath);if (file.exists()) {if (file.delete()) {System.out.println("删除成功");} else {System.out.println("删除失败");}} elseSystem.out.println("目录不存在");}@Testpublic void m2() {String filePath = "e:\\demo\\a\\b\\c";File file = new File(filePath);if (!file.exists()) {if (file.mkdirs())System.out.println("创建成功");elseSystem.out.println("创建失败");} elseSystem.out.println("目录已经存在");}
}

4、遍历目录

通过遍历目录可以在指定的目录中查找文件,或者显示所有的文件列表。File 类的 list() 方法提供了遍历目录功能,该方法有如下两种重载形式。

1. String[] list()

该方法表示返回由 File 对象表示目录中所有文件和子目录名称组成的字符串数组,如果调用的 File 对象不是目录,则返回 null。

提示:list() 方法返回的数组中仅包含文件名称,而不包含路径。但不保证所得数组中的相同字符串将以特定顺序出现,特别是不保证它们按字母顺序出现。

示例代码:

public class Test {public static void main(String[] args) {File f = new File("C:/"); // 建立File变量,并设定由f变量变数引用System.out.println("文件名称\t\t文件类型\t\t文件大小");System.out.println("===================================================");String fileList[] = f.list(); // 调用不带参数的list()方法for (int i = 0; i < fileList.length; i++) { // 遍历返回的字符数组System.out.print(fileList[i] + "\t\t");System.out.print((new File("C:/", fileList[i])).isFile() ? "文件" + "\t\t" : "文件夹" + "\t\t");System.out.println((new File("C:/", fileList[i])).length() + "字节");}}
}

结果:

文件名称  文件类型  文件大小
===================================================
$Recycle.Bin  文件夹  4096字节
Documents and Settings  文件夹  0字节
Download  文件夹  0字节
DRIVERS  文件夹  0字节
FibocomLog  文件夹  0字节
Gateface  文件夹  0字节
GFPageCache  文件夹  0字节
hiberfil.sys  文件  3375026176字节
Intel  文件夹  0字节
KuGou  文件夹  0字节
logs  文件夹  0字节
msdia80.dll  文件  904704字节
MSOCache  文件夹  0字节
MyDownloads  文件夹  0字节
MyDrivers  文件夹  0字节
news.template  文件  417字节
NVIDIA  文件夹  0字节
OneDriveTemp  文件夹  0字节
opt  文件夹  0字节
pagefile.sys  文件  6442450944字节
PerfLogs  文件夹  0字节
Program Files  文件夹  12288字节
Program Files (x86)  文件夹  8192字节
ProgramData  文件夹  12288字节
QMDownload  文件夹  0字节
Recovery  文件夹  0字节
swapfile.sys  文件  268435456字节
System Volume Information  文件夹  12288字节
Users  文件夹  4096字节
Windows  文件夹  16384字节

2. String[] list(FilenameFilter filter)

该方法的作用与 list() 方法相同,不同的是返回数组中仅包含符合 filter 过滤器的文件和目录,如果 filter 为 null,则接受所有名称。

二、输入/输出流介绍

1、基本概念

流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作。

2、分类

(1)根据处理数据类型的不同分为:字符流和字节流

字符流的由来: 因为数据编码的不同,而有了对字符进行高效操作的流对象。本质其实就是基于字节流读取时,去查了指定的码表。字节流和字符流的区别:

(a)读写单位不同:字节流以字节(8bit)为单位,字符流以字符为单位,根据码表映射字符,一次可能读多个字节。

(b)处理对象不同:字节流能处理所有类型的数据(如图片、avi等),而字符流只能处理字符类型的数据。

(c)字节流在操作的时候本身是不会用到缓冲区的,是文件本身的直接操作的;而字符流在操作的时候下后是会用到缓冲区的,是通过缓冲区来操作文件。

结论:优先选用字节流。首先因为硬盘上的所有文件都是以字节的形式进行传输或者保存的,包括图片等内容。但是字符只是在内存中才会形成的,所以在开发中,字节流使用广泛。

(3)根据数据流向不同分为:输入流和输出流

对输入流只能进行读操作,对输出流只能进行写操作,程序中需要根据待传输数据的不同特性而使用不同的流。

3、流类图结构

Java输入/输出流(1)相关推荐

  1. java输出流缓冲区内容清除,Java输入输出流与缓冲区的使用

    Java输入输出流与缓冲区的使用,有需要的朋友可以参考下. 一,Input/Output流: 将外设中的数据读取到内存中就是输入. 将内存中的数据写入到外设中就是出. I/O流就是用来处理设备间的 . ...

  2. java实验10流_实验9 Java输入输出流

    <实验9 Java输入输出流>由会员分享,可在线阅读,更多相关<实验9 Java输入输出流(14页珍藏版)>请在金锄头文库上搜索. 1.山 西 大 学 计 算 机 与 信 息 ...

  3. Java输入/输出流体系中常用的流分类

    java输入/输出流体系中常用的流分类 分类 字节输入流 字节输出流 字符输入流 字符输出流 抽象基类 InputStream OutputStream Reader Writer 访问文件 File ...

  4. JAVA输入输出流学习心得

    JAVA输入输出流 本文主要从以下几个方面总结JAVA输入输出流 1.什么是流?什么是输入输出流? 2.字节流与字符流 3.Scanner 什么是流? 举个例子,水龙头里流出的水流就是流.从水龙头里流 ...

  5. java输入流从指定字节读取,JAVA输入输出流-字节流篇

    当前位置:我的异常网» 综合 » JAVA输入输出流-字节流篇 JAVA输入输出流-字节流篇 www.myexceptions.net  网友分享于:2013-08-14  浏览:8次 JAVA输入输 ...

  6. 【java开发系列】—— java输入输出流

    前言 任何语言输入输出流都是很重要的部分,比如从一个文件读入内容,进行分析,或者输出到另一个文件等等,都需要文件流的操作.这里简单介绍下reader,wirter,inputstream,output ...

  7. Java输入输出流IO

    1.什么是IO Java中I/O操作主要是指使用Java进行输入,输出操作. Java所有的I/O机制都是基于数据流进行输入输出,这些数据流表示了字符或者字节数据的流动序列.Java的I/O流提供了读 ...

  8. Java输入输出流和文件操作

    操作系统中的文件和目录概念 文件与文件系统 文件是信息的一种组织形式,是存储在外部存储介质上的具有标志名的一组相关信息集合. 文件系统用文件概念来组织和管理存放在各种介质上的信息.文件系统提供目录机制 ...

  9. [转]Java输入输出流的使用详细介绍

    出处:http://www.jb51.net/article/36138.htm 1.什么是IO Java中I/O操作主要是指使用Java进行输入,输出操作. Java所有的I/O机制都是基于数据流进 ...

  10. Java基础知识每日总结(19)---Java输入输出流、文件、递归

    输入输出流.文件.递归 在变量.数组和对象中存储数据是暂时的,程序结束后它们则会丢失.为了能够永久地保存程序创建的数据,需要将其保存在磁盘文件中.这样以后就可以在其他程序中使用它们.Java的I/O技 ...

最新文章

  1. Tomcat中出现“RFC 7230 and RFC 3986“错误的解决方法
  2. 每日一皮:当你开始研究一个新项目时是这样的吗?
  3. NS2网络模拟(3)-吞吐率
  4. JQuery实现树的功能doc
  5. OpenMP 线程互斥锁
  6. angularJs-脏检查
  7. 【转】SOAR从概念到落地
  8. 被冬奥会种草的,不止各国羽绒服
  9. java cassandra连接池_Cassandra Java驱动程序的最佳设置只能写入本地数据中心
  10. About 产量数据选取问题
  11. JAVA_WEB程序设计教程 pdf
  12. elipse下载安装教程
  13. 神舟 mini pc Android,巴掌大的台式机!神舟mini PC真机拆解
  14. 麒麟下适配mellanox网卡驱动
  15. Hair-Gan论文翻译
  16. cdr轮廓字怎么把轮廓拆出来_用corelDraw怎么把文字做成轮廓?
  17. 16进制颜色值透明度百分比对照
  18. python换图片_详解Python给照片换底色(蓝底换红底)
  19. 数字芯片有哪些,以及它们的功能是什么?
  20. 使用飞信API 发送 短信

热门文章

  1. 网络正常,QQ无法登录,一直显示登录中
  2. php mysql 连接池_php 如何实现 数据库 连接池
  3. mac php codesniffer,[转载]使用PHP_CodeSniffer规范php代码
  4. 【业务】5个顶级案例教你实现最牛供应链管理
  5. 【数据挖掘】关联规则和Apriori算法
  6. java jconsole_关于java:JConsole在Linux中的位置
  7. PowerDesigner15下载安装
  8. 斐讯K1路由器刷入openwrt及通过netkeeper连接校园网
  9. 视频教程-零基础Python自动化办公(漫画版)-Python
  10. VBScript详解(一)