探究java IO之File类

尽管java.io定义的大多数类用于操作流,但File类却不是。File类直接处理文件和文件系统。也就是说,File类没有指定如何从文件检索信息以及如何向文件中存储信息,而是描述了文件本身的属性。File对象用于获取和操作与磁盘文件关联的信息,例如权限,时间日期以及目录路径,并且还可以浏览子目录层次。

注意:由JDK7为NIO系统增加的Path接口和File类,在许多情况下都为File类提供了强大的替换方案,具体看后面的NIO章节。

下面的构造函数可以用于创建File对象:

File(String directoryPath)
File(String directoryPath,String filename)
File(File dirObj,String filename)
File(URI uriObj)

其中,directoryPath是文件的路径名;filename是文件或子目录的名称; dirObj是指定目录的File对象;uriObj是描述文件的URI对象。

注意:Java使用介于UNIX和Windows约定之间的路径分隔符。如果在Windows版本的Java中使用正斜杠(/),那么路径仍然会被正确解析。请记住,如果使用Windows约定的反斜杠(\),那么在字符串中需要使用转义序列(\\)。

我们来看看File调用的示例:

package io;

import java.io.File;

public class FileDemo {
    public static void main(String[] args) {
        File f1 = new File("/home/fuhd/apache/apr-1.5.1.tar.gz");
        //返回文件名
        System.out.println("File name:" + f1.getName());
        //返回文件路径
        System.out.println("Path:" + f1.getPath());
        //返回绝对路径
        System.out.println("Abs Path:" + f1.getAbsolutePath());
        //返回父目录路径
        System.out.println("Parent:" + f1.getParent());
        //是否存在
        System.out.println(f1.exists() ? "exists" : "does not exist");
        //是否有权限写
        System.out.println(f1.canWrite() ? "is writeable" : "is not writeable");
        //有否有权限读
        System.out.println(f1.canRead() ? "is readable" : "is not readable");
        //是否是文件
        System.out.println(f1.isFile() ? "is normal file" : "might be a maned pipe");
        //是否有绝对路径
        System.out.println(f1.isAbsolute() ? "is absolute" : "is not absolute");
        //文件最后修改时间
        System.out.println("File last modified:" + f1.lastModified());
        //文件大小
        System.out.println("File size:" + f1.length() + " Bytes");
    }
}

File类还提供了两个有用的实用方法。第一个方法是renameTo(),如下所示:

boolean renameTo(File newName)

其中,由newName指定的文件名成为调用File对象的新名称。如果操作成功,就返回true,如果文件不能被重命令就返回false。第二个实用方法是delete(),该方法删除调用File对象的路径所代表的磁盘文件。该方法如下:

boolean delete()

如果目录为空的话,可以使用delete()方法删除这个目录。如果删除成功,delete()方法将返回true;如果不能删除文件,就返回false。

JDK7为File类新增了方法 toPath(),该方法如下所示:

Path toPath()

toPath()方法返回的Path对象表示由调用File对象封装的文件(换句话说,toPath()方法可以将File对象转换成Path对象)。Path是由JDK7新添加的接口。该接口被打包到java.nio.file包中,是NIO组成部分。因此,toPath()方法在旧的File类和新的Path接口之间搭建了一所桥梁。(当然,以前的方法都不是File类的全部,这里只是做了部分介绍而已)

目录

目录是包含一系列其他文件和目录的File对象。当为目录创建File对象时,isDirectory()方法将会返回true。在这种情况下,可以对File对象调用list()方法以提取内部的其他文件和目录列表。如例:

package io;

import java.io.File;

public class DirList {
    public static void main(String[] args) {
        String dir = "/home/fuhd/apache";
        File file = new File(dir);
        if(file.isDirectory()){
            String[] fileList = file.list();
            if(fileList != null && fileList.length > 0){
                for(String f1 : fileList){
                    System.out.println("文件名:" + f1);
                }
            }
        }
    }
}

使用FilenameFilter接口

时间: 2024-08-06 03:41:01

探究java IO之File类的相关文章

Java—IO流 File类的常用API

File类 1.只用于表示文件(目录)的信息(名称.大小等),不能用于文件内容的访问. package cn.test; import java.io.File; import java.io.IOException; public class Demo16 { public static void main(String[] args) { File file = new File("F:\\javaio"); //文件(目录)是否存在 if(!file.exists()) { //

java io包File类

1.java io包File类, Java.io.File(File用于管理文件或目录: 所属套件:java.io)1)File对象,你只需在代码层次创建File对象,而不必关心计算机上真正是否存在对象文件. file类的几个常用方法:file.canRead() boolean ,file.canWrite() boolean,file.canExecute() boolean,file.createNewFile() boolean.(1)file.createNewFile() boole

探究java IO之FileInputStream类

使用FileInputStream类创建的InputStream对象可以用于从文件读取内容.两个常用的构造函数如下所示: FileInputStream(String filePath) FileInputStream(File fileObj) 这两个构造函数都会抛出FileNotFoundException异常.其中,filePath是文件的完整路径名,fileObj是描述文件的File对象. 下面的例子创建了两个FileInputStream对象,它们使用相同的磁盘文件,并且分别是使用这两

Java IO学习--File类

一.File类 File类具备一定的误导性,可能容易认为它指代的是文件,实际并非如此,它既能代表一个特定文件的名称,又能表示一个目录下一组文件的名称.简而言之,File类是文件或者目录路径名的抽象表示,可以帮助我们处理文件目录的问题. 注意:File类只能操作文件的属性,文件的内容它是无法操作的,需要借助流才能操作. 二.File类的使用 1 public class FileDemo { 2 3 public static void main(String[] args) { 4 5 File

探究java IO之SequenceInputStream类

SequenceInputStream类允许连接多个InputStream对象.SequenceInputStream对象的构造与其他所有InputStream对象都不同.SequenceInputStream构造函数使用一对InputStream对象或InputStream对象的一个Enumeration对象作为参数: SequenceInputStream(InputStream first,InputStream second) SequenceInputStream(Enumeratio

探究java IO之PushbackInputStream类

缓存的新应用之一就是回推(pushback)的实现.回推用于输入流,以允许读取字节,然后再将它们返回(回推)到流中.PushbackInputStream类实现了这一思想,提供了一种机制,可以"偷窥"来自输入流的内容而不对它们进行破坏. PushbackInputStream类具有以下构造函数: PushbackInputStream(InputStream inputStream) PushbackInputStream(InputStream inputStream,int num

JAVA之IO技术File类的使用

package ioTest.io3; /* * File类是对文件和文件夹的抽象. * File类的常见方法: * 1.创建 * createNewFile():在指定的位置创建文件,如果该文件已经存在,则不创建,返回false. * 和输出流对象不一样,输出流对象,只要已建立就创建,如果文件存在,则覆盖. * mkdir():创建此抽象路径名指定的目录 * mkdir():创建此抽象路径名指定的目录,包括所有必需但不存在的父目录. * 2.删除 * delete() * deleteOnEx

探究java.io之I/O类和接口

基于流的I/O系统被打包到java.io包中,本系列介绍那些自Java最初发布以来就已提供且广泛使用的部分.然而,从1.4版本开始,Java添加了另一套I/O系统,被称为NIO(也就是new I/O系统的缩写).NIO被打包到java.nio及其子包中..随着JDK7的发布,Java对NIO的功能进行了极大扩展,并且NIO的使用也在朝预期方向增长.NIO系统将在后面再讲. 下面列出了java.io定义的I/O类: BufferedInputStream                      

Java IO(文件操作工具类)

FileOperate实现的功能: 1. 返回文件夹中所有文件列表 2. 读取文本文件内容 3. 新建目录 4. 新建多级目录 5. 新建文件 6. 有编码方式的创建文件 7. 删除文件 8. 删除指定文件夹下所有文件 9. 复制单个文件 10. 复制整个文件夹的内容 11. 移动文件 12. 移动目录 13. 建立一个可以追加的bufferedwriter 14. 得到一个bufferedreader Java代码    package utils; import java.io.Buffer