IO流

知识回顾:

一、使用IO操作,首先要明确一下四点:

1、明确是读,还是写?

2、明确操作对象时字节还是文本?

3、明确数据所在的具体位置?

4、明确是否对数据进行转换等操作?

二、File

所在包java.io.File,

首先需明确操作对象为文件,而非文件里的内容。

其次需明白对应的操作:创建,删除和查找等操作

-------------------------------------------------------------------

那么怎么创建对象呢?下面提供三种方式

假设改路径--------C:\\weixin\\dog.jpg

1、new File("C:\\weixin\\dog.jpg");2、new File("C:\\weixin","dog.jpg");3、File parent = new File("C:\\weixin");new File(parent,"dog.jpg");

需注意:File对象创建的过程中,不会检验路径是否存在,它都会听话的自己创建对应的文件,哈哈哈哈,是不是好蠢。

2、下面说下常用方法

getAbsolutePath:获取绝对路径;getPath:获取路径(二者没发现差别);getName:获取文件名;getLength:获取文件大小

注意点:绝对路径和相对路径,绝对路径包括盘符,相对路径反之;路径中使用反斜杠,在java中反斜杠代表转移,所以两个反斜杠代表一个斜杠,所以和电脑路径有区别

a、判断方法:

exists:判断文件或目录是否存在;isDirectiory:判断是否为目录;isFile:判断是否是文件。

b、创建和删除方法:

createNewFIle:创建文件,文件已存在返回true,反之返回false;delete:File对象进行删除操作;mkdir:File对象进行创建一级文件;mkdirs:创建多级文件;

注意:createNewFile、mkdir和mkdirs的区别

c、遍历方法:

list:返回string数组,得到文件及目录的名称;listFiles返回File对象数组。

注意:listFiles指定路径必须存在;

三、下面通过一个例子对上面方法做个总结

递归遍历文件夹下所有的文件及子文件

代码如下:

public class RecursionDirectory {

  public static void main(String[] args) {

  File file=new File("D:\\java专属IO测试");

  Recursion(file);

   }

  public static void Recursion(File file){

//1、判断传入的是否是目录

if(!file.isDirectory()){

//不是目录直接退出

return;

}

//已经确保了传入的file是目录

File[] files = file.listFiles();

//遍历files

for (File f: files) {

//如果该目录下文件还是个文件夹就再进行递归遍历其子目录

if(f.isDirectory()){

//递归

Recursion(f);

}else {

//如果该目录下文件是个文件,则打印对应的名字

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

}

}

}

}

四、初次见面IO流,存在java.io包下

何为IO:写代码和保存代码就为一次IO操作,读和写操作。

根据流向,分为输入和输出流;根据数据类型,分为字节流和字符流;下面的抽象表格做个说明

      输入流    输出流

字节流  InputStream  OutputStream

字符流  Reader    Writer

后面就会发现:这些类的子类,基本都以父类作为后缀

例如:FileInputStream和FileReader

下面直奔FileOutputStream:文件输出流,两种创建方式:new FileOutputStream("a.txt")或者new FileOutputStream(File file);第一种最常用

 

posted @ 2020-11-27 18:24  StoBe  阅读(128)  评论(0)    收藏  举报