Java输入输出流(NIO)-----文件类File详解

Posted fengfuwanliu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java输入输出流(NIO)-----文件类File详解相关的知识,希望对你有一定的参考价值。

   1.java.io.File类简介

  • 凡是与输入、输出相关的类、接口等都定义在java.io包下
  • File是一个类,可以有构造器创建其对象。此对象对应着一个文件(.txt .avi .doc .ppt .mp3 .jpg)或文件目录
  • File类对象是与平台无关的
  • File中的方法,仅涉及到如何创建、删除、重命名等等。只要涉及文件内容的,File是无能为力的,必须由io流来完成
  • File类的对象常作为io流的具体类的构造器的形参

   2.createNewFile()  delete()  lastModified()   exists() 

package com.nio.File;

import java.io.File;
import java.io.IOException;
import java.util.Date;
/**
 * 文件操作
 * @author yyx 
 * 2019年1月15日
 */
public class FileOperateFirst {
    public static void main(String[] args) {
        String filePath = "D:" + File.separator + "testfile.txt";
        System.out.println(filePath);
        
        File file = new File(filePath);
        
        // 判断文件是否存在且是不是文件
        if (file.isFile() && file.exists()) {
            // 删除文件
            file.delete();
        } else {
            try {
                // 创建文件
                file.createNewFile();
                // 打印文件最后编辑时间
                System.out.println(new Date(file.lastModified()));
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

   3.mkDir()  mkDirs()  list()  listFiles()

package com.nio.File;

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

/**
 * 文件操作
 * 
 * @author yyx 2019年1月15日
 */
public class FileOperateSecond {
    public static void main(String[] args) {
        String mkdirPath = "D:" + File.separator + "testfile";
        File mkdirFile = new File(mkdirPath);
        // isDirectory() 测试此抽象路径名表示的文件是否为目录
        if (!mkdirFile.exists() && !mkdirFile.isDirectory()) {
            // mkDir():创建一个文件目录。只有在上层文件目录存在的情况下,才能返回true
            System.out.println(mkdirFile.mkdir());
        }

        String mkdirsPath1 = "D:" + File.separator + "testfile1" + File.separator + "file1";
        File mkdirsFile1 = new File(mkdirsPath1);
        if (!mkdirsFile1.exists() && !mkdirsFile1.isDirectory()) {
            // 此处因testfile1目录不存在,故报错
            // System.out.println(mkdirsFile1.mkdir());
        }

        String mkdirsPath2 = "D:" + File.separator + "testfile" + File.separator + "file2" + File.separator + "file3";
        File mkdirsFile2 = new File(mkdirsPath2);
        if (!mkdirsFile2.exists() && !mkdirsFile2.isDirectory()) {
            // mkDirs():创建一个文件目录。若上层文件目录不存在,一并创建
            System.out.println(mkdirsFile2.mkdirs());
        }

        /*
         * 只有上级目录存在,才能在该目录下创建文件
         */
        String filePath1 = "D:" + File.separator + "testfile1" + File.separator + "filepath.txt";
        File file1 = new File(filePath1);
        if (!file1.exists()) {
            try {
                // 报错 系统找不到指定的路径
                // file1.createNewFile();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }

        String filePath2 = "D:" + File.separator + "testfile" + File.separator + "file2" + File.separator
                + "filepath1.txt";
        File file2 = new File(filePath2);
        if (!file2.exists()) {
            try {
                System.out.println(file2.createNewFile());
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

        /*
         * list()返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中的文件和目录
         * listFiles()返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件 可以使用递归循环取出目录下的文件和目录
         */
        File file3 = new File(mkdirPath);
        String[] strs = file3.list();
        for (int i = 0; i < strs.length; i++) {
            System.out.println(strs[i]);
        }

        System.out.println("*******************");

        File[] files = file3.listFiles();
        for (int i = 0; i < files.length; i++) {
            System.out.println(files[i].getName());
        }
    }
}

 

以上是关于Java输入输出流(NIO)-----文件类File详解的主要内容,如果未能解决你的问题,请参考以下文章

java-NIO-FileChannel

Java第三阶段学习(IO流------File类)

Java IO学习总结

Java NIO

Java IO流-NIO简介

IO流NIO