一起Talk Android吧(第二十一回:Java常用类之文件操作一)

222 阅读4分钟

各位看官们,大家好,上一回中咱们说的是Java常用类之Date的例子,这一回咱们说的例子是Java常用类之文件操作。闲话休提, 言归正转。让我们一起Talk Android吧!

看官们,编写程序是离不开数据的,数据有多种载体,文件便是其中的一种载体。因此,我们在程序中经常使用的文件。Java把文件封装成了File类,我们通过该类可以对文件进行相关的操作。接下来我们就对File类做详细的介绍。

文件与目录

文件通常都位于相应的目录下,我们可以单独创建文件或者目录。创建文件和目录的方法待会就会介绍。如果我们我们想对文件和目录进行区分,可以使用isDirectory()和isFile()方法来判断File类型的对象是目录还是文件,不过使用它们的前提是文件或者目录已经存在,否则它们总是返回false。

创建文件

创建文件时只需要使用File类的createNewFile()方法就可以,不过我们需要创建一个File类型的对象,代码如下: File file = new File(filePath); 如果参数中的filePath中包含有目录信息,那么必须保证目录已经存在,如果不存在,需要先创建目录。该方法只能创建文件,不能创建目录。

创建目录

创建目录时只需要使用File类的makeDire()方法就可以,和创建文件时一样,我们也需要创建一个File类型的对象。

删除文件和目录

删除文件时只需要使用File类的delete()方法就可以,和创建文件时一样,我们也需要创建一个File类型的对象。该方法也可以删除目录。

获取文件列表

有时候需要获取一个目录下的文件列表,这时可以使用File类的list()或者listFiles()方法,前者返回的是String类型的数组,它把目录下的文件名都存放到了数组中;后者返回的是File类型的数组,它把文件名以及文件的的目录以File类型对象的形式存放于数组中。

看官们,这些内容可以看作是理论部分,接下来我们通过具体的代码来实践一下如何进行文件操作。

public class FileOp {

    public static String filePath = "H:"+File.separator+"a.txt";
//  public static String filePath = "H:"+File.separator+"t"+File.separator+"a.txt";
    public static void main(String args[]) throws Exception
    {

        File file = new File(filePath);

        if( !file.exists() )    // must check the file state
        {
            if(new File(file.getParent()).exists())
                file.createNewFile();
            else
                System.out.println("Parent dir is not exist");
        }
        else
            System.out.println("File is "+filePath+"is existed");

        if(file.isDirectory())
            System.out.println("it is diectory");
        else
            System.out.println("it is a file");


        filePath =  "H:"+File.separator;        
        String fileList[] = new File(filePath).list();
        if(fileList != null)
        {
            System.out.println("--- File name as following:");
            for(String i: fileList)
                System.out.println(i);
        }

        File fileFullList[] = new File(filePath).listFiles();
        if(fileFullList != null)
        {
            System.out.println("--- File name with path as following:");
            for(File i: fileFullList)
                System.out.println(i);
        }

        file.delete();

        if(file.exists())
            System.out.println("File deleted Failed");
        else
            System.out.println("File deleted OK");
    }       
}

在上面的程序中,有一个File.separator没有介绍,它表示目录分隔符号,大家都知道Windows系统和Linux系统的目录分隔符不一样,使用该常量可以保证不同系统中的分隔符是相同的,进而提高了程序的可移植性。

下面是程序的运行结果,请大家参考:

it is a file
--- File name as following:
a.txt
code
download
--- File name with path as following:
H:\a.txt
H:\code
H:\download
File deleted OK

从上面的程序运行结果中可以看到,我们在H盘根目录下创建一个a.txt文件,出于“环保”的考虑,在程序结束时删除了该文件。此外我们还列出了H盘下的文件和目录,其中一部分带有目录信息,这要归功中listFile()方法。

看官们,File类为我们操作文件提供了便利,不过随着技术的发展它就有点“不方便”了,为此在Java SE7中添加的新的文件类:Files。它的功能更加强大。不过我们暂时先不介绍它,如果哪位看官感兴趣的话,可以参考JDK中的文档。

各位看官,关于Java常用类之文件操作的例子咱们就介绍到这里,欲知后面还有什么例子,且听下回分解!