java核心技术之IO流(一)File类

x33g5p2x  于2021-03-13 发布在 Java  
字(3.4k)|赞(0)|评价(0)|浏览(97)

File类的说明

File类是java.io包中对应着硬盘中的一个文件或网络中的一个资源,可以表示一个文件(.doc .xls .mp3 .avi .jpg .dat等类型),也可以表示一个文件目录。

File类的对象是与平台无关的,File类针对文件或文件目录,只能进行新建,删除,重命名,上层目录等操作,如果涉及到访问文件的内容,File是无能为力,只能使用IO流来实现。我们常把File类的对象做为形参传递给相应的IO流的构造方法中。

关键方法

构造方法:

File(String path)
使用文件路径名path创建一个File对象
File(URI uri)
使用一个文件的uri创建一个File对象
File(File dir, String name)
使用一父文件dir和文件名name创建一个File对象
File(String dirPath, String name)
使用父文件名dirPath和文件名name创建一个File对象

常用方法

方法名说明
getName()获取文件名
getAbsolutePath()获取文件绝对路径
getParent()获取文件的父路径名
lastModified()获取最后修改时间
length()获取文件大小
canRead()获取文件是否可读
canWrite()获取文件是否可写
mkdir()创建文件夹
exists()文件是否存在
createNewFile()创建一个新文件

关键变量:
separator 文件路径的分割符(“\”),这个变量可以更好的支持跨平台的文件名表示

File的Demo代码

这个Demo有三个方法:
BaseInfo()—–显示文件的基本信息,如名字,大小,路径,修改时间等等。
showFiles(File file)—–显示文件目录下的文件名(不包括子目录下的文件)
showAllFiles(File file)—–显示文件目录下的文件名(包括子目录下的文件)

import java.io.File;
import java.io.IOException;
import java.util.Date;

public class FileDemo {

    //文件的基本信息
    public static void BaseInfo(){
        System.out.println("BaseInfo()");

        File file = new File("test.txt");
        if(!file.exists()){
            try {
                file.createNewFile();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }

        System.out.println("file.getName():  "+file.getName());
        //C:\Documents and Settings\All Users\workspace\IODemo\test.txt
        System.out.println("file.getAbsolutePath():  "+file.getAbsolutePath());

        System.out.println("file.getParent():  "+file.getParent());
        System.out.println("new Date(file.lastModified()):  "+ new Date(file.lastModified()));
        System.out.println("file.length():  "+ file.length());
        System.out.println("file.canRead():  "+ file.canRead());
        System.out.println("file.canWrite():  "+ file.canWrite());
        System.out.println("file.pathSeparator  "+file.pathSeparator);//;
        System.out.println("file.separator  "+file.separator);//file.separator---路径分割符(\)

        File file2 = new File("Demo1");
        file2.mkdir();
    }

    //显示文件目录下的文件名(不包括子目录下的文件)
    public static void showFiles(File file){
        System.out.println("\nshowFiles:  "+file.getName());
        String[] strs = file.list();
        for (int i = 0; i < strs.length; i++) {
            System.out.println("文件"+i+"的名称:"+strs[i]);
        }
    }

    //显示文件目录下的文件名(包括子目录下的文件)
    public static void showAllFiles(File file){
        System.out.print(file.getName()+"/");
        File[] f1 = file.listFiles();
        if(f1 != null && f1.length > 0){

            for (int i = 0; i < f1.length; i++) {
                //System.out.println("文件"+i+"名字: "+f1[i].getName());
                if(f1[i] != null){
                    if(f1[i].isDirectory()){
                        if(f1[i] != null){
                            System.out.print("/");
                            showAllFiles(f1[i]);    
                        }
                    }else{
                        if(i == 0){
                            System.out.println(" ");
                        }
                        System.out.println("文件"+i+"名字: "+f1[i].getName());
                    }
                }
            }           
        }
    }

}

调用:

//1.File的一个基本信息
FileDemo.BaseInfo();

//2.显示文件目录下的文件名(不包括子目录下的文件)
File f1 = new File("C:\\Documents and Settings");
FileDemo.showFiles(f1);
//3.显示文件目录下的文件名(包括子目录下的文件)
FileDemo.showAllFiles(f1);

输出信息:

BaseInfo()
file.getName():  test.txt
file.getAbsolutePath():  C:\Documents and Settings\All Users\workspace\IODemo\test.txt
file.getParent():  null
new Date(file.lastModified()):  Thu Oct 15 20:05:48 CST 2015
file.length():  0
file.canRead():  true
file.canWrite():  true
file.pathSeparator  ;
file.separator  \

showFiles:  Documents and Settings
文件0的名称:All Users
文件1的名称:Default User
文件2的名称:LocalService
文件3的名称:NetworkService
文件4的名称:user.com

.................

参考资料:
1.File api文档
http://tool.oschina.net/apidocs/apidoc?api=jdk_7u4
2.java io视频
http://edu.csdn.net/course/detail/805/10961?auto_start=1

相关文章