io包之:IO流

io包之:IO流(IO原理、File类)

一、IO流概念

通过数据流、序列化和文件系统提供系统输入和输出

二、IO流体系

IO流分:字节流和字符流

            字节流分:输入流和输出流

                  inputStream   outputstream

            字符流分:输入流(读流)和输出流(写流)

                  reader            writer

三、File类

1. 概念

包含了对文件和文件夹的操作方法,可通过File类对文件或文件夹进行操作(新建、删除、重命名等)。

2. 构造方法

a. File(String pathname)

  例: File fi = new File("e:\\text\\a.txt");

b. File(File parent, String child)

例:File fi = new File("e:\\text","a.txt");

c. File(String parent, String child)

d. File(URI uri)

3. 常用方法

boolean   isDirectory();            //判断是否是目录

boolean   isFile();           //判断是否是文件

File    getAbsolutePath();      //获得文件的绝对路径

boolean   isHidden();          //判断是否是隐藏文件

boolean   exists();         //判断所关联的文件或文件夹是否存在

boolean   createNewFile();    //创建一个新的文件(仅当对象文件不存在时)

boolean   mkdir();        //创建一个文件夹

  //要用mkdir()创建目录,必须上一级目录存在,即最底层目录前面的目录全都存在

boolean   mkdirs();            //创建一个文件夹

   //要想把File对象包含的目录一次性全都创建好,可以使用mkdirs()方法。

boolean   renameTo(File dest);    //重命名文件,为文件或文件夹改名

boolean   delete();            //删除指定的文件或文件夹

void    deleteOnExit();      //在虚拟机终止时,请求删除此抽象路径名表示的文件或目录。

boolean   equals(Object obj); //比较的文件名字相同为true,不同为false

文件管理:

String getName();         //获得文件名或目录名

String getParent();            //获得文件的上一级父目录的名字

File      getParentFile();     //获得文件的上一级父目录的对象

long    lastModified();        //获得文件的最后修改时间(毫秒,当前时间与格林时间(1970 年 1 月 1 日,00:00:00 GMT)之间的毫秒数)

long   length();        //获得文件大小(长度),以字节为单位

String[]    list();        //获得指定文件夹下的所有文件的名字

File[]   listFiles();      //获得文件夹下的所有文件的对象

static File  listRoots();//获得当前系统的盘符

4. 将毫秒数转成日期:

SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd"); 

//该类用来对日期字符串进行解析和格式化输出

System.out.println(sdf.format(毫秒数));

四、递归

1.定义

方法自己调用自己

2. 思路

(1)指定文件夹路径;

(2)判断是否是文件,是文件就打印文件路径(到最底层了);相反如果是目录,则继续;

(3)获取文件夹下所有文件对象;

(4)遍历对象数组,执行递归。

3. 应用

当某一功能要重复使用时。

4. 注意

递归时一定要明确结束条件。

5.案例

public static void prints(File f){

      if(f.isFile()){ //判断是否是文件

          System.out.println(f.getPath());

      }else if(f.isDirectory()){ //如果是文件夹

          File[] fs=f.listFiles(); //得到下面所有的文件对象

          for(File fa:fs){

            prints(fa);

             }

         }

}

五、面试题

1.getParent()与getParentFile()的区别?

getParent()返回此抽象路径名父目录的路径名字符串;如果此路径名没有指定父目录,则返回 null 

getParentFile()返回此抽象路径名父目录的抽象路径名;如果此路径名没有指定父目录,则返回 null

猜你喜欢

转载自blog.csdn.net/LYQ2332826438/article/details/81409084