Java - IO之File类及常用方法 July 20,2019

 

Java流的分类

按流向分:
  输入流(input)--读数据 :    程序可以从中读取数据的流。
  输出流(output)-- 写数据:  程序能向其中写入数据的流。
按数据传输单位分:
  字节流: 以字节为单位传输数据的流
  字符流: 以字符为单位传输数据的流
按功能分:
  节点流: 用于直接操作目标设备的流
  过滤流: 是对一个已存在的流的链接和封装,通过对数据进行处理为程序提供功能强大、灵活的读写功能。
 
一、什么叫文件
    一种电脑的存储形式
    文件有不同的格式   .txt   .doc   .ppt   .mp4   .jpg   .rar   ...
    文件夹?----目录路径
    File----->与电脑上的文件或文件夹产生一一对应的映射关系
    File是一个类

  1.java.io包中
    Java的核心库java.io提供了全面的IO接口。包括:文件读写、标准设备输出等。Java中IO是以流为基础进行输入输出的,所有数据被串行化写入输出流,或者从输入流读入。

  2.文件或目录路径名的抽象表示形式

  3.File与真实硬盘中的文件或文件夹  不是一个东西
       File是在内存中的一个对象<---映射--->硬盘上的文件或文件夹

  4.File类中的常用的方法
      (1)canRead()   canWrite()   isHidden()   isFile()   isDirectory()
      (2)length()获取文件中字节的个数
      (3)lastModified()获取文件最后的修改时间--->毫秒值
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;

public class TestFile {
    public static void main(String[] args){
        File file = new File("F:\\JavaTest\\Test.txt");     
        /*
            注意区分文件夹(也称目录路径)与文件(.txt  .ppt .doc ......)
            file不是一个文件,而是堆内存中创建的一个对象空间,  输入的路径
        是看创建的对象是否能与硬盘中一个真实的文件产生对应的映射关系
            硬盘上的文件的名字是不区分大小写的,内存中的变量对象file 名字区分大小写

        */

        //文件本身的一些属性, 右键--->属性
        System.out.println(file.canExecute());//是否可以正常打开
        System.out.println(file.canWrite());//是否可写入(只读属性)
        System.out.println(file.canRead());//是否可读
        System.out.println(file.isHidden());//是否隐藏
        System.out.println(file.isFile());//判断当前的file是否是一个文件
        System.out.println(file.isDirectory());//判断当前的file是否是一个路径(文件夹)
        /*文件存入的是    ab
                           c
                           abc共三个字节 但是共有2个回车符,所以是5个字节
        */
        long i = file.length();//有的文件很大 所以用long类型接收
        System.out.println(i);//返回文件的长度(字节数)

        long time = file.lastModified();//获取文件最后的修改时间 ,是毫秒值
        Date date = new Date(time);//将时间转换格式
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd KK:mm:ss");
        System.out.println(simpleDateFormat.format(date));


    }
}

输出结果:
true
true
true
false
true
false
5
2019-07-20 10:44:42

  *(4)String path = getAbsolutePath()  获取文件的绝对路径   D://test//Test.txt
             绝对路径<---->相对路径
             绝对路径可以通过完整的字符串  定位盘符 文件夹 文件
             相对路径没有盘符的写法           当前工程(项目)所在的位置找寻

  (5)String name = getName() 获取文件的名字    Test.txt

//绝对
import java.io.File;

public class TestFile {
    public static void main(String[] args){
        //可以用//来代替\\
        File file = new File("F:\\JavaTest\\Test.txt");
        //带盘符的是绝对路径, 不带盘符的是相对路径
        String name = file.getName();
        String path = file.getAbsolutePath();
        System.out.println(name);
        System.out.println(path);
    }
}
输出结果:
Test.txt
F:\JavaTest\Test.txt

//相对
import java.io.File;

public class TestFile {
    public static void main(String[] args){
        //可以用//来代替\\
        File file = new File("JavaTest\\Test.txt");
        //带盘符的是绝对路径, 不带盘符的是相对路径
        String name = file.getName();
        String path = file.getAbsolutePath();
        System.out.println(name);
        System.out.println(path);

    }
}
输出结果:
Test.txt
F:\IdeaProjects\TextIO\JavaTest\Test.txt

       *(6)boolean = createNewFile()  创建新的文件
       *(7)boolean = mkdir               创建新的文件夹  外层没有 不能创建
       *(8)boolean = mkdirs             创建新的文件夹  外层没有 可以自动创建

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

public class TestFile {
    public static void main(String[] args){
        //创建一个文件
        File file = new File("F://JavaTest//abc.txt");
        try {
            boolean value = file.createNewFile();//用来创建一个文件,会出现编译异常,所以应该添加try
            System.out.println(value);
        } catch (IOException e) {
            e.printStackTrace();
        }

        //创建一个文件夹
        File file1 = new File("F://JavaTest//File");
        boolean value1 = file1.mkdir();//无异常,因为创建文件夹在系统中不占用内存
        /*
        可以创建一个文件夹 ,但是必须在外层文件夹存在的情况下才可创建
        即若想File file1 = new File("F://JavaTest//123/1234");
        若想在123文件夹中创建一个1234文件夹,只有123文件夹真实存在时才可创建1234返回true
         */
        System.out.println(value1);

        //若想在123文件夹不存在的情况下,创建一个123文件并且在其中创建一个1234文件夹,可使用mkdirs()
        File file2 = new File("F://JavaTest//123/1234");
        boolean value2 = file2.mkdirs();//无异常,因为创建文件夹在系统中不占用内存
        System.out.println(value2);


    }
}
输出结果:
true
true
true

   (9)String pname = getParent()  获取当前file的父亲file名字
       *(10)File file = getParentFile()      获取当前file的父层file对象

import java.io.File;

public class TestFile {
    public static void main(String[] args){
        File file = new File("F:\\JavaTest\\123\\1234\\123.txt");
        File file1 = file.getParentFile();
        while (file1!=null){//如果等于null 则证明是盘符
            System.out.println(file1.getAbsolutePath());
            file1 = file1.getParentFile();
        }


//        String name = file.getParent();//获取当前file的父类名字
//        File file1 =file.getParentFile();//获取当前file的父类对象
//        System.out.println(name);
//        System.out.println(file1.getAbsolutePath());    
    }
}
输出结果:
F:\JavaTest\123\1234
F:\JavaTest\123
F:\JavaTest
F:\

        (11)String[] names = list()            获取当前file的所有子层名字
       *(12)File[] files = listFiles()             获取当前file的所有子层对象
       *(13)boolean = delete() 删除文件或空的文件夹  不能删除带元素的文件夹

import java.io.File;


public class TestFile {
    public static void main(String[] args){
//        File file = new File("F:\\JavaTest\\File");
//        boolean value = file.delete();//删除文件或不带元素的文件夹,不能删除带元素的文件夹
//        System.out.println(value);

        File file = new File("F:\\JavaTest\\File");
        //数组对象为空         证明当前的file是一个文件
        //数组对象不为空       证明当前的file是一个文件夹
        //数组对象的长度不为0  证明当前的file是一个不为空的文件夹  文件夹内有元素
        File[] files = file.listFiles();
        System.out.println(files);
        System.out.println(files.length);
    }
}
输出结果:
[Ljava.io.File;@1b6d3586
0

 

posted @ 2019-07-20 12:04  亿贫如洗杨道长  阅读(24)  评论(0编辑  收藏  举报