`
liuwei1981
  • 浏览: 752603 次
  • 性别: Icon_minigender_1
  • 来自: 太原
博客专栏
F8258633-f7e0-30b8-bd3a-a0836a5f4de5
Java编程Step-by...
浏览量:156173
社区版块
存档分类
最新评论

89.文件操作初步

 
阅读更多

1 基本文件操作

 

 

 

在Java中,提供了对文件以及目录进行操作的File类。注意,在Java中,对目录的操作也是通过这个类来完成的,并没有单独为目录定义相应的类。File类放在java.io包中。

 

 


在Java中,将路径也当作File类来处理。它并没有为路径特别设置一个类。路径名中除了最后一个之外每个字段都表示一个目录;最后一个字段可能表示一个目录或文件名。路径名可以是绝对的,也可以是相对的。绝对路径名包含了定位它所表示的文件所需要的全部信息,而相对路径名则不然,必须依据其他路径名的信息进行解释。

在默认情况下,系统总是依据当前用户的工作路径来解释相对路径,这个路径是由系统属性“user.dir”确定的,并且通常就是Java虚拟机从其中启动的那个目录。


可以使用多种格式创建File类对象,例如:
File file;
//以当前工作路径下的Test.java文件来创建一个File对象


file = new File("Test.java"); 
//以目录E:\ex\下的文件Test.java来创建一个File对象


file = new File("E:\\ex\\","Test.java");
//以文件E:\ex\Test.java来创建一个File对象,和上一句效果一样


file = new File("E:\\ex\\Test.java");
//以目录E:\ex\来创建一个File对象


File path = new File("E:\\ex\\");
//以File对象path路径下的Test.java来创建一个对象


File file = new File(path, "Test.java");


因为在Java中,反斜杠“\”是转义符,所以在使用它来表示Windows目录的分割符的时候,需要用“\\”来表示。另外,在各种操作系统中,对于文件路径都有不同的表示方式,比如,在Unix/Linux/BSD和其他类Unix系统中,通过在路径前面的“/”表示根目录,如果一个路径中的最前面有“/”标记,则说明这个路径是绝对路径;而在Windows中,通过盘符和“\”来表示绝对路径,可以通过类File的字符串常量seperator,可以获得对应目标操作系统上的路径分割符。在Java中,File类定义的是一个抽象的、与操作系统无关的类。


需要提醒注意的是,在创建File对象的时候,它并不会在磁盘上产生一个路径或文件。创建一个File对象只是创建了一个表示相应的文件或路径的File类的实例。


在File这个类中,定义了很多的方法用于对文件或目录进行操作。下面列出一些比较常用的一些方法:

 

文件名相关
String  getName():返回此File对象所表示的文件名或目录名(如果是目录的话,返回最后一级子目录名);
String  getPath():返回此File对象所对应的路径;
String  getAbsolutePath():返回此File对象所对应的绝对路径名;
String  getParent():返回此File对象对应目录(最后一级子目录)的父目录路径名;
boolean  renameTo(File newName):重命名此File对象对应的文件,如果重命名成功,返回true,否则返回false。

 

文件检测
boolean  exists():判断文件对象的文件或目录是否存在。
boolean  canWrite():判断目录或文件是否可写。
boolean  canRead():判断目录或文件是否可读。
boolean  isFile():判断File对象指向的是否为一个文件。
boolean  isDirectory():判断File对象指向的是否为一个目录。
boolean  isAbsolute():判断文件对象的路径是否是绝对路径。这取决于不同的操作系统,在Unix/Linux/BSD等系统上,如果路径的开头是“/”,说明它是一个绝对路径,而在Windows上,如果路径的开头是盘符,或者路径是由“\”来分割的,则说明它是一个绝对路径。


获取常规文件信息
long lastModified():返回此File对象所对应文件的最后一次被修改时间。long型返回值表示此文件最后一次被修改的时间,注意,在这边返回的不是日期,而是从格林威治时间(GMT)1970年1月1日00:00:00以来的毫秒数;
long length():返回文件的长度;

 

文件操作
boolean createNewFile():自动创建一个File对象中指定文件名的空的文件,只有在指定文件名文件不存在的时候才能成功;
boolean delete():删除File对象对应的文件或目录;
File createTempFile(String prefix,String suffix):在默认的临时目录下创建一个临时文件,文件名由前缀prefix、系统生成的随机数和后缀suffix指定,返回一个表示新创建的临时文件的File 对象;
File createTempFile(String prefix,String suffix,File directory):在指定的目录directory下创建一个临时文件,文件名由前缀prefix、系统生成的随机数和后缀suffix指定,返回一个表示新创建的临时文件的File 对象;
void deleteOnExit():在Java虚拟机退出的时候,请求删除对象所指定的文件。

 

目录操作
boolean mkdir():试图新建一个File对象所定义的一个路径,如果新建成功,返回true,否则,返回false。此时File对象必须是目录对象。
String[] list():只对File对象为目录时有效,返回这个目录下的所有文件以及子目录;
File[] listFiles():返回File对象表示的路径下的所有文件对象数组。

 

下面我们来看一个示例,熟悉上述方法的使用。

import java.io.File;
import java.io.IOException;

public class FileOper {
 public static void main(String[] args) {
  File f = new File("c:\\JDK14");

  try {
   // 在f指定的目录下创建一个临时文件
   f.createTempFile("myTmp", ".linshi", f);
  } catch (IOException e) {
   System.out.println(e.getMessage());
  }

  // 获得目录下的所有文件和子目录
  File[] files = f.listFiles();
  for (int i = 0; i < files.length; i++) {
   if (files[i].isFile()) {
    System.out.println("文件:" + files[i]);
   } else {
    System.out.println("目录:" + files[i]);
   }
  }
 }
}


运行这个FileOper应用,将会生成一个myTmpXXXX.linshi的临时文件,然后,通过File对象的listFiles()方法,返回一个File对象,并且将这些对象按照文件或者目录打印出来:在输出它们的完整路径名称之前,指明它们的类型。下面是应用执行的结果:
目录:c:\JDK14\bin
文件:c:\JDK14\COPYRIGHT
目录:c:\JDK14\demo
目录:c:\JDK14\include
目录:c:\JDK14\jre
目录:c:\JDK14\lib
文件:c:\JDK14\LICENSE
文件:c:\JDK14\myTmp12363.linshi
文件:c:\JDK14\readme.html
文件:c:\JDK14\README.txt
目录:c:\JDK14\src
文件:c:\JDK14\src.zip


注意这里的临时文件“myTmp12363.linshi”,它在指定的前缀“myTmp”和后缀“.linshi”之间加入了一个随机数,以防止文件名的重复。重复执行这个程序,将生成不同文件名的临时文件,格式为“myTmpXXXXX.linshi”,其中“XXXXX”会不断变化。


File类中的其他方法的使用,在此不一一举例,请读者参考API文档和上面的方法说明使用它们。


2 文件过滤

 

 

 

在File类的list()方法中,可以接受一个参数FileNameFilter,通过它,可以只将一些符合条件的文件列出来。

 

 


FileNameFilter是一个接口,它只有一个accept()方法,所以,只需要自己定义一个类实现这个接口,并且将接口中的accept()实现,然后将它作为File的list()方法的参数就可以实现文件的过滤功能。注意,只需要将FileNameFilter对象作为list()方法参数就可以了,不需要在程序中调用accept()方法,程序在运行过程中会自动调用这个方法来过滤文件,它是一个回调方法(callback method)。


下面我们来看一个使用过滤器来过滤文件的例子。


 

import java.io.*;

/**
 * 功能:按照扩展名过滤文件(Java)
 *
 * @version v1.0
 */
public class JavaFilter implements FilenameFilter {
 /**
  * 只接受java文件
  *
  * @see JavaList
  * @param args
  *            Path,FileName
  * @return true or false
  */

 public boolean accept(File dir, String name) {
  return name.endsWith(".java");
 }
}


这个类JavaFilter实现了FileNameFilter接口,并且实现了accept()方法,它将根据文件扩展名是否为.java来过滤文件。


下面是使用这个JavaFilter来过滤文件的例子。


 

import java.io.*;

/**
 * 功能:把某个路径下的文件,通过JavaFilter过滤后(只返回)java文件,输出到屏幕
 *
 * @author alex wen
 * @version v1.0
 */

public class JavaList {
 /**
  * @param Path
  * @return java files
  */
 public static void main(String args[]) {
  if (args.length != 1) {
   System.out.println("Usage:java JavaList <directory>");
   System.exit(0);
  }
  String dir = args[0];
  File currDir = new File(dir);
  String[] javaFiles = currDir.list(new JavaFilter());
  for (int i = 0; i < javaFiles.length; i++) {
   System.out.println(javaFiles[i]);
  }
 }
}


这个程序将刚才定义的JavaFilter类当作File类的list()方法的参数,因此,它能够将指定路径下的所有java文件列出来。

分享到:
评论

相关推荐

    操作系统课程设计文件管理系统

    通过课程设计, 加深对操作系统各资源管理模块的理解,掌握操作系统的基本原理及功能,具有初步分析实际操作系统、设计、构造和开发现代操作系统的基本能力。 二、实验题目 1.编写并调试一个树型目录结构的文件系统,...

    Linux操作实验-初步了解Linux的命令格式

    Linux操作实验: 1. 初步了解Linux的命令格式; 2. 学习如何连接Linux系统; 3. 实习几个文件维护命令; 4. 学会如何得到帮助信息; 5. 练习几个最常用的命令。

    Linux操作系统基础教程

    在这一讲中,我们主要是了解一下 Linux 的概况,以及对 Linux 有一个初步的感性认识。 一.什么是Linux? Linux 是一个以 Intel 系列 CPU(CYRIX,AMD 的 CPU也可以)为硬件平台,完全免费的 UNIX 兼容系统,完全...

    GIT中文资源

    1.3.2 近乎所有操作都可本地执行 . . . . . . . . . . . . . . . . . . 5 1.3.3 时刻保持数据完整性 . . . . . . . . . . . . . . . . . . . . . 5 1.3.4 多数操作仅添加数据 . . . . . . . . . . . . . . . . . . ....

    AD域配置详细操作文档

    21初步理解组策略 ...................................................................................................................... 188  22 组策略轻松实现软件发布 ...............................

    Linux网络操作系统基础:Linux初步使用.ppt

    Linux网络操作系统基础:Linux初步使用.ppt 关键词提示: 内容: Linux 光盘安装 准备工作: 下载安装光盘 收集计算机硬件信息 规划硬盘空间及网络配置 硬件需求: CPU:X86系列 Pentium以上 Memory: 文本模式:&gt;=...

    TCL编程初步

    14.1.1.1 Client端socket命令..89 14.1.1.2 Server端socket命令选项90 14.1.2 用 fconfigure配置套接字. 90 14.1.3 C/S编程举例 90 14.2 事件驱动编程93 14.2.1 after命令. 93 14.2.2 fileevent 命令. 96 ...

    CSV文件操作及Gzip压缩文件操作

    文档中包括使用流文件读取CSV文件、SqlServer的各种驱动读取CSV文件。Gzip文件的压缩与解压。...本项目还涉及到文件的下载操作及断点续传操作,以及性能监视的部分功能。可谓多重技术混合,对初步入门的人员有所帮助

    Oracle 审计的初步操作.doc

    Oracle 审计的初步操作,现在开始学习Oracle数据库,看到审计这块,就想知道审计是怎么回事。看了看,知道了审计就是监控用户对数据库的操作,并把这些操作放到操作系统文件中或者数据库中。

    【操作系统实验报告】文件读入与导出

    (1)实验内容: ...通过在Linux操作系统上编写和调试简单程序,进一步熟悉Linux操作系统的使用,初步掌握linux环境下的C或C++编译和调试工具,为进一步理解和学习Linux操作系统的内核结构和核心机制作准备。

    C++ 文件管理 实验报告

    1. 理解和掌握C风格文件操作; 2. 理解和掌握流类库风格文件操作; 3. 初步掌握C++模板和异常处理的使用; 4. (选作)进一步掌握如何在面向对象程序设计中使用继承和多态。 1. 编写一个控制台程序fm.exe,可利用...

    瑞得林科(MyCaster )双屏嵌入式导播机使用指南

    2 初步了解 MyCaster ......................................................................................................................................... 7 2.1 MyCaster 主机概览 .....................

    操作系统课设C++模拟Linux文件系统

    操作系统课程设计: 需求分析: ...1.深入了解文件管理系统,初步掌握文件管理系统的实现方法。 2.实现基本的linux、dos命令。 实现少量拓展高级命令。 文件包括程序和课设报告,环境是Visual Studio 2019

    复旦nois教材01.rar

    2.2.8 把符号(symbol)加入到BDF文件中...............................................................24 2.2.9 加入引脚和基本单元............................................................................

    多文件压缩与解压程序 实验报告

    1. 进一步理解和掌握文件操作和命令行参数的实现; 2. 初步了解和掌握分析和使用第三方类库进行程序设计; 3. 初步接触如何对多种解决方案进行对比和选择 1. 分析给出的多文件打包/解包程序MyZip和单文件压缩程序...

    JAVA程序设计教程

    目录 引言 ...................................................................................................................................... I 第一章程序和程序设计 ...............................

    文件服务器方案.docx

    文件服务器初步方案 背景说明 为防止员工个人PC因病毒、误操作、硬盘损坏等问题造成重要资料丢失、公司前期使用Linux平台架设简易的文件服务器、实现了各部门重要资料的基本备份。随着公司业务的发展,文件服务器的...

    linux脚本大全必看

    Advanced Bash-Scripting Guide 高级 Bash脚本编程指南&gt;&gt; ... 文件测试操作 7.3. 其他比较操作 7.4. 嵌套的if/then条件test 7.5. 检查你的test知识 8. 操作符和相关的主题 8.1. 操作符 8.2. 数字常量

    体系文件管理程序.pdf

    5 程序内容 5.1 体系文件制、修订计划的编制 5.1.1 公司机关各部门和具有公司管理职能的附属单位,根据职责范围、程 序文件和管理类作业文件识别、评价结果、公司管理实际和发展需要,在 初步论证基础上,于每年 3 ...

    文件管理程序流程图形式(1).doc

    "序号 "流程图 "流程说明 "负责人 "相关文件 "相关记录 " "1 " "1、各部门文件制作人或"部门文件" " " " " "负责人按照光能集团文 "负责人 " " " " " "件格式制订好所需文件 " " " " " " "的初步格式后交文控中 ...

Global site tag (gtag.js) - Google Analytics