现在的位置: 首页 > 综合 > 正文

java File操作实例

2013年09月05日 ⁄ 综合 ⁄ 共 9130字 ⁄ 字号 评论关闭
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处理
-------------------------------------------------------------------------------

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

 9
10}

11

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

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

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

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

 1import java.io.File;
 2
 3public class FileDemo {
 4
 5 public static void main(String[] args) throws Exception {
 6  File f = new File("test");
 7  f.mkdir();
 8 }

 9}

10

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

 1import java.io.File;
 2
 3public class FileDemo {
 4
 5 public static void main(String[] args) throws Exception {
 6  File f = new File("c://test");
 7  f.mkdir();
 8 }

 9}

10

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

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

 1import java.io.File;
 2
 3public class FileDemo {
 4
 5 public static void main(String[] args) throws Exception {
 6  File f = new File("c://test//test//test");
 7  f.mkdir();
 8 }

 9
10}

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

 1import java.io.File;
 2
 3public class FileDemo {
 4
 5 public static void main(String[] args) throws Exception {
 6  File f = new File("c://test//test//test");
 7  f.mkdir();
 8 }

 9
10}

11
12

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

 1import java.io.File;
 2
 3public class FileDemo {
 4
 5 public static void main(String[] args) throws Exception {
 6  File f = new File("c://test//test//1.txt");
 7  f.createNewFile();
 8 }

 9
10}

11

-------------------------------------------------------------------------------
-------------------------------------------------------------------------------
 
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:直接在某特定目录下新建文件,而且是跨平台的
-------------------------------------------------------------------------------

 1import java.io.File;
 2
 3public class FileDemo {
 4
 5 public static void main(String[] args) throws Exception {
 6  File fDir = new File(File.separator);
 7  String strFile = "test" + File.separator
 8      + "test" + File.separator
 9      + "1.txt";
10  File f = new File(fDir, strFile);
11  
12  f.createNewFile();
13 }

14
15}

16

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

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

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

 1import java.io.File;
 2
 3public class FileDemo {
 4
 5 public static void main(String[] args) throws Exception {
 6  File fDir = new File(File.separator);
 7  String strFile = "test" + File.separator
 8      + "test" + File.separator
 9      + "1.txt";
10  File f = new File(fDir, strFile);
11  
12  f.delete();
13 }

14
15}

16

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

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

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

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

 1import java.io.File;
 2
 3public class FileDemo {
 4
 5 public static void main(String[] args) throws Exception {
 6  File fDir = new File(File.separator);
 7  String strFile = "test" + File.separator
 8      + "test" + File.separator
 9      + "1.txt";
10  File f = new File(fDir, strFile);
11  
12  f.createNewFile();
13  
14  f.deleteOnExit();
15  Thread.sleep(3000); // 程序休眠3秒
16 }

17

抱歉!评论已关闭.