文件操作类------File类

尽管java.io包中定义的大多数类是对数据实施流式操作的,但File类例外,它用于处理文件和文件系统。也就是说File类没有指定数据怎样从文件读取或向文件存储,它仅仅描述了文件本身的属性。

在java.io包之中,File类是唯一一个与文件本身有关的操作类。它定义了一些与平台无关的方法来操作文件,通过调用File类提供的各种方法,能够完成创建

删除文件,重命名文件,判断文件的读写权限及文件是否存在,设置和查询文件创建时间、权限等操作。File类除了对文件操作外,还可以将目录当做文件进行处理------Java中的目录当成File对象对待。

如果要想使用File类进行操作,那么就必须设置一个要操作文件的路径。下面的3个构造方法可以用来生成File对象。

  • File(String directoryPath)//创建指定文件或目录路径的File对象
  • File(String directoryPath,String filename)//创建由File对象和指定文件名的File对象
  • File(File dirObj,String filename)//创建指定文件目录路径和文件名的File对象

Java能正确处理UNIX和Windows/DOS约定路径分隔符。如果在Windows版本的Java下用斜线(/),路径处理依然正确。请注意:如果在Windows/DOS下使用反斜线(\)来作为路径分隔符,那么就需要在字符串内使用它的转义序列(即两个反斜线“\\”)。Java约定是用UNIX和URL风格的斜线“/”来作路径分隔符。

下面的例子演示了File类的几个方法的使用。

import java.io.File;
import java.io.IOException;

/**
 * Created by 1 on 2018/8/20.
 */

public class FileDemo {
    public static void main(String[] arg){
        File file = new File("c:\\1.txt");
        if (file.exists())
            file.delete();
        else
            try {
                file.createNewFile();
            } catch (IOException e) {
                System.out.println(e.getMessage());
            }
        //getName()方法获得文件名
        System.out.println("文件名:" + file.getName());
        //getPath()方法获得文件路径
        System.out.println("文件路径:" + file.getPath());
        //getAbsolutePath()方法获得绝对路径
        System.out.println("绝对路径:" + file.getAbsolutePath());
        //getParent()方法获得父文件夹名
        System.out.println("父文件夹名称:" + file.getParent());
        //exists()判断文件是否存在
        System.out.println(file.exists() ? "文件存在" : "文件不存在");
        //canRead()判断文件是否可读
        System.out.println(file.canRead() ? "文件可读" : "文件不可读");
        //canWrite()判断文件是否可写
        System.out.println(file.canWrite() ? "文件可写" : "文件不可写");
        //isDirectory()判断是否是目录
        System.out.println(file.isDirectory() ? "是目录" : "不是目录");
        //isFile()判断是否是文件
        System.out.println(file.isFile() ? "是文件" : "不是文件");
        //isAbsolute()判断是否是绝对路径
        System.out.println(file.isAbsolute() ? "是绝对路径" : "不是绝对路径");
        //lastModified()文件最后修改时间
        System.out.println("文件最后修改时间:" + file.lastModified());
        //length()文件大小
        System.out.println("文件大小:" + file.length() + "Bytes");
    }
}

 File类只能对文件进行一些简单操作,如读取文件的属性及创建、删除和更名等,但并不支持文件内容的读、写。如果想对文件进行实施读写操作,就必须通过输入、输出流来达到这一目的。

以上程序运行同时会出现以下问题:

  1. 在操作的时候出现了延迟,因为文件的管理肯定还是由操作系统完成的,那么程序通过JVM(Java Virtual Machine)与操作系统进行操作,多了一层操作,所以势必会产生一定的延迟。
  2. 在Windows之中路径的分隔符使用“\”,而在Linux中分隔符使用“/”,而现在Java程序如果要想让其具备可移植性,就必须考虑分隔符的问题所以为了解决这样的困难,在File类中提供了一个常量:public static final String separator.在日后的开发之中,只要遇见路径分隔符的问题,都可用separator常量来解决。

以上程序是直接在d盘的根路径下创建的新文件,如果说现在有目录的时候就发现无法直接创建文件了,因为文件目录不存在,要想创建文件之前首先创建目录。

 创建一级目录:public boolean mkdir();

创建多级目录:public boolean mkdirs();

而如果要想创建目录应该是根据给定路径的父路径才可以创建,所以要想取得父路径可以使用:public File getParentFile();

import java.io.File;
import java.io.IOException;

/**
 * Created by 1 on 2018/8/20.
 */

public class Test {
    public static void main(String[] args) throws IOException {
        File file = new File("d:" + File.separator + 
                             "mytest" + File.separator + 
                             "demo" + File.separator +
                             "mldn.txt");//要定义的操作文件路径
        if (!file.getParentFile().exists()){//父路径不存在
            file.getParentFile().mkdirs();//创建目录
        }
        System.out.println(file.createNewFile());
    }
}

 

你可能感兴趣的:(Android开发,Java开发)