`
sunxiang0918
  • 浏览: 46887 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

Java IO操作之File类

    博客分类:
  • J2SE
阅读更多

File类

一个File类的对象,表示了磁盘上的文件或目录。
File类提供了与平台无关的方法来对磁盘上的文件或目录进行操作。
------------
Java API:
------------
java.io
类 File
java.lang.Object
  java.io.File
所有已实现的接口:
Serializable, Comparable<File>
public class File
extends Object
implements Serializable, Comparable<File>

文件和目录路径名的抽象表示形式。

用户界面和操作系统使用与系统相关的路径名字符串 来命名文件和目录。此类呈现分层路径名的一个抽象的、与系统无关的视图。抽象路径名 有两个组件:
一个可选的与系统有关的前缀 字符串,比如盘符,"/" 表示 UNIX 中的根目录,"\\\\" 表示 Microsoft Windows UNC 路径名,以及
零个或更多字符串名称 的序列。
除了最后一个,抽象路径名中的每个名称代表一个目录;最后一个名称既可以代表目录,也可以代表文件。空的 抽象路径名没有前缀和名称序列。

路径名字符串与抽象路径名之间的转换与系统有关。将抽象路径名转换为路径名字符串时,每个名称与下一个名称之间由单个默认分隔符字符 隔开。默认名称分隔符由系统属性 file.separator 定义,也可以从此类的公共静态字段 separator 和 separatorChar 中得到。将路径名字符串转换为抽象路径名时,可以使用默认名称分隔符或者受基础系统支持的其他任何名称分隔符来分隔其中的名称。

无论是抽象路径名还是字符串路径名,都可以是绝对 路径名或相对 路径名。绝对路径名是完整的路径名,不需要任何其他信息就可以定位自身表示的文件。相反,相对路径名必须使用来自其他路径名的信息进行解释。默认情况下,java.io 包中的类总是根据当前用户目录来分析相对路径名。此目录由系统属性 user.dir 指定,通常是 Java 虚拟机的调用目录。

前缀的概念用于处理 UNIX 平台的根目录,以及 Microsoft Windows 平台上的盘符、根目录和 UNC 路径名,如下所示:
对于 UNIX 平台,绝对路径名的前缀始终是 "/"。相对路径名没有前缀。表示根目录的绝对路径名的前缀为 "/" 并且没有名称序列。
对于 Microsoft Windows 平台,包含盘符的路径名的前缀由驱动器名和一个 ":" 组成:如果路径名是绝对路径名,后面可能跟着 "\\"。UNC 路径名的前缀是 "\\\\";主机名和共享名是名称序列中的前两个名称。没有指定驱动器的相对路径名无前缀。

File 类的实例是不可变的;也就是说,一旦创建,File 对象表示的抽象路径名将永不改变。


从以下版本开始:
JDK1.0
-------------------------------------------------------------------------------
-------------------------------------------------------------------------------
构造方法摘要
File(File parent, String child)
          根据 parent 抽象路径名和 child 路径名字符串创建一个新 File 实例。
File(String pathname)
          通过将给定路径名字符串转换成抽象路径名来创建一个新 File 实例。
File(String parent, String child)
          根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 实例。
File(URI uri)
          通过将给定的 file: URI 转换成一个抽象路径名来创建一个新的 File 实例。

-------------------------------------------------------------------------------
-------------------------------------------------------------------------------

1、创建文件和文件夹
------------
Java API:
------------
createNewFile
public boolean createNewFile()
                      throws IOException
当且仅当不存在具有此抽象路径名指定的名称的文件时,原子地创建由此抽象路径名指定的一个新的空文件。检查文件是否存在,如果不存在则创建该文件,这是单个操作,对于其他所有可能影响该文件的文件系统活动来说,该操作是原子的。

注:此方法不应 用于文件锁定,因为所得到的协议可能无法可靠地工作。应该使用 FileLock 机制替代。

返回:
如果指定的文件不存在并成功地创建,则返回 true;如果指定的文件已经存在,则返回 false
抛出:
IOException - 如果发生 I/O 错误
SecurityException - 如果存在安全管理器,且其 SecurityManager.checkWrite(java.lang.String) 方法拒绝对文件进行写入访问
从以下版本开始:
1.2
-------------------------------------------------------------------------------
Demo1: FileDemo.java
创建一个文件,简单起见,异常由JVM处理
-------------------------------------------------------------------------------

import java.io.File;
 
 public class FileDemo {
 
  public static void main(String[] args) throws Exception {
   File f = new File("1.txt");
   f.createNewFile();
  }

}

 
-------------------------------------------------------------------------------
-------------------------------------------------------------------------------

------------
Java API:
------------
mkdir
public boolean mkdir()
创建此抽象路径名指定的目录。

返回:
当且仅当已创建目录时,返回 true;否则返回 false
抛出:
SecurityException - 如果存在安全管理器,且其 SecurityManager.checkWrite(java.lang.String) 方法不允许创建指定的目录

-------------------------------------------------------------------------------
-------------------------------------------------------------------------------
Demo2:在当前文件夹中创建一个文件夹test
-------------------------------------------------------------------------------


import java.io.File;
 
 public class FileDemo {
 
  public static void main(String[] args) throws Exception {
   File f = new File("test");
   f.mkdir();
  }
 }
 

-------------------------------------------------------------------------------
-------------------------------------------------------------------------------
Demo3:创建一个根目录下的文件夹test
方法名:mkdir()
 注意:'\'要使用转义字符'\\'来代替
-------------------------------------------------------------------------------

 import java.io.File;
 
 public class FileDemo {
 
  public static void main(String[] args) throws Exception {
   File f = new File("c:\\test");
   f.mkdir();
  }
 }
 


------------
Java API:
------------
mkdirs
public boolean mkdirs()
创建此抽象路径名指定的目录,包括创建必需但不存在的父目录。注意,如果此操作失败,可能已成功创建了一些必需的父目录。

返回:
当且仅当已创建该目录以及所有必需的父目录时,返回 true;否则返回 false
抛出:
SecurityException - 如果存在安全管理器,且其 SecurityManager.checkRead(java.lang.String) 方法不允许验证指定目录和所有必需的父目录是否存在;或者 SecurityManager.checkWrite(java.lang.String) 方法不允许创建指定的目录和所有必需的父目录
-------------------------------------------------------------------------------
-------------------------------------------------------------------------------
Demo4:创建一个根目录下的文件夹test
方法名:mkdirs()
-------------------------------------------------------------------------------

import java.io.File;
 
 public class FileDemo {
 
  public static void main(String[] args) throws Exception {
   File f = new File("c:\\test\\test\\test");
   f.mkdir();
  }
 
}
 


-------------------------------------------------------------------------------
-------------------------------------------------------------------------------
Demo5:在当前目录下创建多级子目录(注意格式,先文件名,再'\\')
   如果是(\\test\\test)格式,则会在当前文件所在的盘符的根目录下创建目录
-------------------------------------------------------------------------------

import java.io.File;
 
 public class FileDemo {
 
  public static void main(String[] args) throws Exception {
   File f = new File("c:\\test\\test\\test");
   f.mkdir();
  }
 
}

 


-------------------------------------------------------------------------------
-------------------------------------------------------------------------------
Demo6:直接在某特定目录下新建文件
-------------------------------------------------------------------------------

import java.io.File;
 
 public class FileDemo {
 
  public static void main(String[] args) throws Exception {
   File f = new File("c:\\test\\test\\1.txt");
   f.createNewFile();
  }
 
}
 


-------------------------------------------------------------------------------
-------------------------------------------------------------------------------
 
2、创建跨平台代码

-------------------------------------------------------------------------------
字段摘要
static String pathSeparator
          与系统有关的路径分隔符字符,出于方便考虑,它被表示为一个字符串。
static char pathSeparatorChar
          与系统有关的默认路径分隔符字符。
static String separator
          与系统有关的默认名称分隔符,出于方便考虑,它被表示为一个字符串。
static char separatorChar
          与系统有关的默认名称分隔符
-------------------------------------------------------------------------------
使用下面的构造方法:
------------
Java API:
------------
File
public File(File parent,
            String child)
根据 parent 抽象路径名和 child 路径名字符串创建一个新 File 实例。

如果 parent 为 null,则创建一个新的 File 实例,这与调用给定 child 路径名字符串的单参数 File 构造方法的效果一样。

否则,parent 抽象路径名用于表示目录,而 child 路径名字符串用于表示目录或文件。如果 child 路径名字符串是绝对路径名,则用与系统有关的方式将它转换成一个相对路径名。如果 parent 是空抽象路径名,则新的 File 实例是通过将 child 转换成抽象路径名并根据与系统有关的默认目录来分析结果而创建的。否则,将每个路径名字符串转换成一个抽象路径名,并根据父抽象路径名分析子抽象路径名。

参数:
parent - 父抽象路径名
child - 子路径名字符串
抛出:
NullPointerException - 如果 child 为 null
-------------------------------------------------------------------------------
Demo7:直接在某特定目录下新建文件,而且是跨平台的
-------------------------------------------------------------------------------

import java.io.File;
 
 public class FileDemo {
 
  public static void main(String[] args) throws Exception {
   File fDir = new File(File.separator);
   String strFile = "test" + File.separator
       + "test" + File.separator
       + "1.txt";
  File f = new File(fDir, strFile);
  
  f.createNewFile();
 }

}
 


-------------------------------------------------------------------------------
运行结果:在X:\test\test下创建了1.txt文件
-------------------------------------------------------------------------------
 
------------
Java API:
------------
delete
public boolean delete()
删除此抽象路径名表示的文件或目录。如果此路径名表示一个目录,则此目录必须为空才能删除。

返回:
当且仅当成功删除文件或目录时,返回 true;否则返回 false
抛出:
SecurityException - 如果存在安全管理器,且其 SecurityManager.checkDelete(java.lang.String) 方法拒绝对文件进行删除访问
 

3、删除文件
-------------------------------------------------------------------------------
-------------------------------------------------------------------------------
-------------------------------------------------------------------------------
Demo8:删除某个文件
-------------------------------------------------------------------------------

import java.io.File;
 
 public class FileDemo {
 
  public static void main(String[] args) throws Exception {
   File fDir = new File(File.separator);
   String strFile = "test" + File.separator
       + "test" + File.separator
       + "1.txt";
  File f = new File(fDir, strFile);
  
  f.delete();
 }

}
 


-------------------------------------------------------------------------------
-------------------------------------------------------------------------------
 ------------
Java API:
------------
deleteOnExit
public void deleteOnExit()
在虚拟机终止时,请求删除此抽象路径名表示的文件或目录。仅在虚拟机正常终止时,才会试图执行删除操作,这在 Java Language Specification 中已定义。

一旦已经请求执行删除操作,就无法取消该请求。所以应小心使用此方法。

注:此方法不应 用于文件锁定,因为所得到的协议可能无法可靠地工作。应该使用 FileLock 设施替代。

抛出:
SecurityException - 如果存在安全管理器,且其 SecurityManager.checkDelete(java.lang.String) 方法拒绝对文件进行删除访问
从以下版本开始:
1.2
另请参见:
delete()
-------------------------------------------------------------------------------
Demo9:程序结束后删除某个文件
-------------------------------------------------------------------------------

import java.io.File;
 
 public class FileDemo {
 
  public static void main(String[] args) throws Exception {
   File fDir = new File(File.separator);
   String strFile = "test" + File.separator
       + "test" + File.separator
       + "1.txt";
  File f = new File(fDir, strFile);
  
  f.createNewFile();
  
  f.deleteOnExit();
  Thread.sleep(3000); // 程序休眠3秒
 }

}
 


-------------------------------------------------------------------------------
运行结果:程序运行,创建文件,然后休眠3秒,程序结束,删除文件。
-------------------------------------------------------------------------------
 
 4、创建临时文件:
 
------------
Java API:
------------
createTempFile
public static File createTempFile(String prefix,
                                  String suffix)
                           throws IOException
在默认临时文件目录中创建一个空文件,使用给定前缀和后缀生成其名称。调用此方法等同于调用 createTempFile(prefix, suffix, null)。

参数:
prefix - 用于生成文件名的前缀字符串;至少必须是三个字符长
suffix - 用于生成文件名的后缀字符串;可能是 null,在这种情况下,将使用后缀 ".tmp"
返回:
表示新创建的空文件的抽象路径名
抛出:
IllegalArgumentException - 如果 prefix 参数包含少于三个的字符
IOException - 如果无法创建文件
SecurityException - 如果存在安全管理器,且其 SecurityManager.checkWrite(java.lang.String) 方法不允许创建文件
从以下版本开始:
1.2
-------------------------------------------------------------------------------
Demo10:创建临时文件
-------------------------------------------------------------------------------

 import java.io.File;
 
 public class FileDemo {
 
  public static void main(String[] args) throws Exception {
   for( int i = 0; i < 5; i++){
    File.createTempFile("tempfile", ".tmp");
   }
  }

}
 


-------------------------------------------------------------------------------
运行结果:在默认的Temp文件夹下创建5个临时文件
-------------------------------------------------------------------------------
-------------------------------------------------------------------------------
Demo11:创建临时文件,然后程序结束后删除临时文件
-------------------------------------------------------------------------------

 import java.io.File;
 
 public class FileDemo {
 
  public static void main(String[] args) throws Exception {
   for( int i = 0; i < 5; i++){
    File f = File.createTempFile("tempfile", ".tmp");
    f.deleteOnExit();
   }
  Thread.sleep(3000);
 }

}
 


-------------------------------------------------------------------------------
-------------------------------------------------------------------------------
 
5、list方法:
------------
Java API:
------------
list
public String[] list()
返回由此抽象路径名所表示的目录中的文件和目录的名称所组成字符串数组。

如果此抽象路径名并不表示一个目录,则此方法将返回 null。否则,为目录中的每个文件或目录返回一个字符串数组。表示目录本身及其父目录的名称不包括在结果中。每个字符串是一个文件名,而不是一条完整路径。

不保证所得数组中的相同字符串将以特定顺序出现,特别是不保证它们按字母顺序出现。

返回:
由此抽象路径名所表示的目录中的文件和目录的名称所组成字符串数组。如果目录为空,则数组也将为空。如果抽象路径名不表示一个目录,或者发生 I/O 错误,则返回 null。
抛出:
SecurityException - 如果存在安全管理器,且其 SecurityManager.checkRead(java.lang.String) 方法拒绝对目录进行读取访问
-------------------------------------------------------------------------------
-------------------------------------------------------------------------------
Demo12:列出文件夹下面的所有文件名和文件夹名
-------------------------------------------------------------------------------

import java.io.File;
 
 public class FileDemo {
 
  public static void main(String[] args) throws Exception {
   File fDir = new File(File.separator);
   String strFile = "test" + File.separator
       + "test";
   File f = new File(fDir, strFile);
  String[] names = f.list();
  
  for (int i = 0; i < names.length; i++) {
   System.out.println(names[i]);
  }
 }

}
 

-------------------------------------------------------------------------------
-------------------------------------------------------------------------------

6、过滤显示文件
------------
Java API:
------------
list
public String[] list(FilenameFilter filter)
返回由包含在目录中的文件和目录的名称所组成的字符串数组,这一目录是通过满足指定过滤器的抽象路径名来表示的。此方法的行为与 list() 方法相同,除了所返回数组中的字符串必须满足过滤器。如果给定 filter 为 null,则接受所有名称。否则,当且仅当在此抽象路径名和它所表示的目录中的文件名或目录名上调用过滤器的 FilenameFilter.accept(java.io.File, java.lang.String) 方法返回 true 时,该名称才满足过滤器。

参数:
filter - 文件名过滤器
返回:
由此抽象路径名所表示的目录中的文件和目录的字符串数组,该字符串被给定 filter 所接受。如果目录为空,或者没有名称被过滤器接受,则该数组将为空。如果抽象路径名不表示一个目录,或者发生 I/O 错误,则返回 null。
抛出:
SecurityException - 如果存在安全管理器,且其 SecurityManager.checkRead(java.lang.String) 方法拒绝对目录进行读取访问

------------
Java API:
------------
java.io
接口 FilenameFilter
public interface FilenameFilter

实现此接口的类实例可用于过滤器文件名。Abstract Window Toolkit 的文件对话框组件使用这些实例过滤 File 类的 list 方法中的目录清单。


从以下版本开始:
JDK1.0
另请参见:
FileDialog.setFilenameFilter(java.io.FilenameFilter), File, File.list(java.io.FilenameFilter)

方法摘要
 boolean accept(File dir, String name)
          测试指定文件是否应该包含在某一文件列表中。

 

方法详细信息

accept
boolean accept(File dir,
               String name)
测试指定文件是否应该包含在某一文件列表中。

参数:
dir - 被找到的文件所在的目录。
name - 文件的名称。
返回:
当且仅当该名称应该包含在文件列表中时返回 true;否则返回 false。
-------------------------------------------------------------------------------
String的方法IndexOf的API:
------------
Java API:
------------
indexOf
public int indexOf(String str)
返回第一次出现的指定子字符串在此字符串中的索引。返回的整数是
 this.startsWith(str, k)
 
为 true 的最小值 k。

参数:
str - 任意字符串。
返回:
如果字符串参数作为一个子字符串在此对象中出现,则返回第一个这样的子字符串的第一个字符的索引;如果它不作为一个子字符串出现,则返回 -1。
-------------------------------------------------------------------------------
-------------------------------------------------------------------------------
Demo13:列出文件夹下面的所有特定后缀名的文件名,如.java

-------------------------------------------------------------------------------
 import java.io.*;
 
 public class FileDemo {
 
  public static void main(String[] args) throws Exception {
   File fDir = new File(File.separator);
   String strFile = "test" + File.separator
       + "test";
  File f = new File(fDir, strFile);
  String[] names = f.list(new FilenameFilter(){
     public boolean accept(File dir, String name){
      return name.indexOf(".java") != -1;
     }
    });
  
  for (int i = 0; i < names.length; i++) {
   System.out.println(names[i]);
  }
 }

}
 


-------------------------------------------------------------------------------
运行结果:列出*.java文件
-------------------------------------------------------------------------------

分享到:
评论

相关推荐

    Java对IO类File的操作

    在Java编程语言中,`java.io.File`类是处理文件和目录的核心类。它提供了创建、删除、重命名文件和目录以及获取文件属性等操作。本文将深入探讨`File`类的基本使用方法,并通过分析提供的压缩包中的示例代码来展示...

    Java基础IO流之File类的使用

    Java基础IO流之File类的使用 File类是Java中的一个基础类,用于处理文件和目录操作。下面是File类的使用详解: File类的作用 File类的作用是提供一个抽象表示形式,用于描述文件和目录的路径,并提供了一些基本的...

    java file,java读取txt文档

    在Java中,`java.io.File`类是用于操作文件和目录的基本工具。它可以用来创建、删除、重命名文件,以及获取文件的属性信息,如大小、路径、最后修改时间等。 要读取一个TXT文档,我们需要使用Java的I/O流。这里主要...

    javaIO操作简单例子

    Java IO(Input/Output)操作是Java编程中的基础部分,主要负责数据的读取和写入。在Java中,InputStream 和 FileOutputStream 是两个重要的类,分别用于处理输入流和输出流,它们构成了Java IO体系的基础。 ...

    Java IO 工具类大全

    File类是Java IO中的基础类,它主要用于文件和目录的创建、删除、重命名以及属性查询等操作。例如,你可以使用`new File("path")`创建一个File对象,然后调用`exists()`检查文件是否存在,`mkdirs()`创建多级目录,`...

    javaIo操作的基础代码

    在Java中,`java.io.File`类用于表示文件和目录路径名的抽象表示。它提供了创建、删除、重命名文件或目录的方法,以及获取文件属性(如大小、最后修改时间等)的功能。例如,`new File("path/to/file")`可以创建一个...

    java的io操作

    Java的IO操作是Java编程中不可或缺的一部分,它允许程序与外部存储设备进行交互,如读取文件、写入文件、创建文件夹等。在Java中,`java.io`包提供了大量的类和接口来支持这些功能。 首先,我们来看如何创建一个新...

    Java IO处理类的汇总

    Java IO处理类是Java平台中用于输入输出操作的核心部分,它允许程序与各种类型的输入源(如文件、网络连接)以及输出目标(如显示器、打印机)进行交互。本篇文章将全面解析Java IO处理类,包括基本概念、常用类库、...

    java.io包中的File类.doc

    Java.io 包中的 File 类 Java.io 包中的 File 类是 Java 语言中代表磁盘文件本身的对象,定义了一些与平台无关的方法来...Java.io 包中的 File 类提供了许多实用的方法来操纵文件,帮助开发者更方便地处理文件操作。

    Java IO 基础操作(文件读写和移动)

    在Java中,我们可以使用`java.io.File`类来创建、删除、重命名或检查文件是否存在。例如,创建一个新文件的代码如下: ```java File file = new File("newFile.txt"); file.createNewFile(); ``` 如果要移动文件,...

    javaIO流File类的使用共3页.pdf.zip

    Java IO流中的File类是Java标准库中处理文件操作的核心类,它位于`java.io`包下。File类主要用于文件和目录的创建、删除、重命名等操作,以及获取文件的相关信息,如路径、大小、最后修改时间等。在Java程序中,File...

    Java iO操作全集

    ### Java I/O 操作全集...以上就是关于Java中`File`类的一些基本操作和示例代码。理解并熟练掌握这些基本操作对于进行Java文件和目录的管理非常重要。希望这些知识点能帮助你在Java开发过程中更高效地进行文件操作。

    java的各种io操作

    在Java中,IO操作主要依赖于`java.io`包中的类和接口。 1. **新建目录**: 在Java中,我们使用`java.io.File`类来代表文件或目录。`File`类提供了`mkdir()`方法用于创建单级目录,如果需要创建多级目录,可以使用`...

    Java教程之javaIO详解

    Java IO 中的 File 类、输入流和输出流是处理输入输出操作的基本类和方法,BufferedOutputStream、BufferedInputStream、DataOutputStream 和 DataInputStream 等过滤流提供了带缓冲的读写和基本数据类型的读写功能...

    java IO详解课件

    `File`类是`java.io`包的一部分,可以直接处理文件和文件系统的属性。 - **File类的特点**: - `File`类提供了多种方法来获取文件和目录的信息,如文件名、路径、是否存在等。 - 不涉及文件内容的实际读写操作,...

    java-io-file类笔记

    Java中的`java.io.File`类是用于操作文件和目录的核心工具。它不涉及实际的数据流操作,而是专注于文件和文件系统的元数据。`File`对象提供了丰富的功能,包括创建、删除、重命名文件以及检查文件或目录的存在状态,...

Global site tag (gtag.js) - Google Analytics