TreeMind树图在线AI思维导图
当前位置:树图思维导图模板高校与高等教育其他学科文件File,IO流思维导图

文件File,IO流思维导图

  收藏
  分享
免费下载
免费使用文件
U419205878 浏览量:122022-12-18 16:01:12
已被使用4次
查看详情文件File,IO流思维导图

树图思维导图提供 文件File,IO流 在线思维导图免费制作,点击“编辑”按钮,可对 文件File,IO流  进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:98f3bd2b32b4ef63dbd1e593ab465783

思维导图大纲

文件File,IO流思维导图模板大纲

文件File

概述

文件和文件夹路径名的抽象表现形式

三种构造方法

File(String pathname)

通过将给定的路径名字符串转换为抽象路径名来创建新的File实例

代码案例:(参数是完整的文件路径) File file01 = new File("H:\\aaa\\hello.txt");

File(String parent, String child)

从父路径名字符串和子路径名字符串创建新的File实例

代码案例:(参数是父路径和子路径) File file02 = new File("H:\\aaa", "hello.txt");

File(File parent, String child)

从父文件对象和子路径名字符串创建新的File实例

代码案例:(参数父文件对象和子路径) File fileaaa = new File("H:\\aaa"); File file03 = new File(fileaaa, "hello.txt");

成员方法

1.创建一个由该路径名命名的新空文件,并返回Boolean数据

public boolean createNewFile()

代码案例: File file01 = new File("mymodule/mm1"); System.out.println(file01.createNewFile());

2.创建单级目录(文件夹)

public boolean mkdir()

代码案例: File file01 = new File("mymodule/a"); System.out.println(file01.mkdir());

创建多级目录(文件夹)

public boolean mkdirs()

代码案例: File file03 = new File("mymodule/m/n/x"); //mkdirs可以创建 多级目录 包括不存在的目录 System.out.println(file03.mkdirs());

4.删除

删除由此抽象路径名表示的文件或目录

public boolean delete()

特点: 1.删除后不会进入回收站; 2.只能删除空文件夹

代码案例: File file1 = new File("x/y/z.mp3"); System.out.println(file1.delete());

5.判断

1.判断路径名表示的File是否为目录(文件夹)

public boolean isDirectory()

代码案例: File file = new File("module01\\src\\com\\heima\\test2", "Demo01.java"); System.out.println(file.isDirectory());

2.判断路径名表示的File是否为文件

public boolean isFile()

代码案例: System.out.println(file.isFile());

3.判断路径名表示的File是否存在

public boolean exists()

代码案例: System.out.println(file.exists());

6.获取

1.获取绝对路径名的字符串

public String getAbsolutePath()

代码案例: File file02 = new File("mymodule/a/b"); System.out.println(file02.getAbsolutePath());//获取绝对路径 C:\Users\halon\Desktop\java52\day09\project09\mymodule\a\b

2.获取创建文件对象的时候传入的路径

public String getPath()

代码案例: System.out.println(file02.getPath()); //获取创建文件对象的时候传入的路径 mymodule/a/b

3.获取文件名字

public String getName()

代码案例: System.out.println(file02.getName()); //获取文件名字 b

4.获取当前目录里 的文件和文件夹的File对象放到一个数组里,返回数组

public File[] listFiles()

代码案例: File file03 = new File("mymodule/m/n"); //获取当前目录里 的文件和文件夹的File对象放到一个数组里 File[] files = file03.listFiles();

5.获取文件的大小

public long length()

file01.length()

路径方式

绝对路径

从盘符开始,一个文件的完整路径。

相对路径

相对于当前文件所在目录

./表示当前文件所在目录,作为开头可以省略

../表示长一层目录

分隔符

常用分隔符: /或者\\

File.separator

代码案例: System.out.println("a" + File.separator + "b" + File.separator + "n");

子主题 5

子主题 4

IO流

概述

IO:输入(Input)/输出(Output)

流:指数据,也叫数据流

IO流就是用来处理设备间数据传输问题的.常见的应用: 文件复制; 文件上传; 文件下载,音视频播放

分类

按数据的流向

输入流

读数据, 把数据从其他设备上读取到内存中的流。

输出流

写数据, 把数据从内存中写出到其他设备上的流。

按照数据类型来分

字节流

以字节为单位,读写数据的流。

字节输入流(FileInputStream)

构造方法

创建FileInputStream实例对象,参数传入File对象

FileInputStream(File file)

代码案例: FileInputStream fis = new FileInputStream(file);

创建FileInputStream实例对象,参数传入正确的文件路径名

FileInputStream(String name)

代码案例: FileInputStream fis = new FileInputStream("module01/bbb/a.txt");

注意事项:当你创建一个流对象时,必须传入一个文件或者文件路径。该路径下,**如果没有该文件,会抛出FileNotFoundException**

成员方法

一次读取一个字节

public void close()

代码案例: int read = fis.read();

将数据先读取到数组缓存区,并返回读取长度,没有数据返回-1.

public int read(byte[] b)

byte[] bs = new byte[10]; int result = fis.read(bs); //数组长度为10,一次性读10个字节长度

关闭流

public void close()

代码案例:fis.close();

字节输出流(FileOutputStream)

抽象类,表示字节输出流的所有类的超类

构造方法

可以传入file对象作为参数,来创建对象

public FileOutputStream(File file)

创建文件输出流以指定的路径写入文件。

public FileOutputStream(String name)

代码实现的三步骤 (一次写一个字节的情况)

1创建字节输出流对象

2调用字节输出流对象的写数据方法

3释放资源

成员方法

将指定的字节写入此文件输出流 一次写一个字节数据

void write(int b)

代码案例: fos.write(100);

以一个字节数组的形式进行书写

void write(byte[] b)

代码案例: fos.write(new byte[]{66, 67, 68, 69, 70});

以len数量,从off偏移量的字节数组写入数据

void write(byte[] b, int off, int len)

byte[] bs = {71, 72, 73, 74, 75}; fos.write(bs, 1, 3); //把bs数组 偏移一个 然后写到文件里3个字节 这里是72 73 74写到文件里了

写入字符串格式,可以通过getBytes转换为数据:fos.write("你好fdsfs".getBytes());

如何实现换行和追加数据

换行

\r\n

代码案例: fos.write("\r\n".getBytes());

追加数据

public FileOutputStream(String name,boolean append)

代码案例: FileOutputStream fos = new FileOutputStream("module01/aaa/c.txt",true); 第二个参数为true 表示从后面追加写入数据

字符流

以字符为单位,读写数据的流

写入字符流(FileWrite)

构造方法

根据给定的 File 对象构造一个 FileWriter 对象

FileWriter(File file)

代码案例: FileWriter fw = new FileWriter(file);

根据给定的 File 对象构造一个 FileWriter 对象,并明确后面是否在续写

FileWriter(File file, boolean append)

根据给定的文件名构造一个 FileWriter 对象

FileWriter(String fileName)

代码案例: FileWriter fw = new FileWriter("qqqqqq.txt");

根据给定的文件名以及指示是否附加写入数据的 boolean 值来构造 FileWriter 对象

FileWriter(String fileName, boolean append)

代码案例: FileWriter fw = new FileWriter("qqqqqq.txt",true);

成员方法

1.写一个字符

void write(int c)

代码案例: fw.write(100);

2.写入一个字符数组

void write(char[] cbuf)

代码案例:char[] cs = {'a', 'g', '啊', '吃'}; fw.write(cs);

3.写入字符数组的一部分

void write(char[] cbuf, int off, int len)

char[] cs = {'a', 'g', '啊', '吃'}; fw.write(cs,2,3);

4.写一个字符串

void write(String str)

代码案例: fw.write("饭了,吃烤鸭,吃宫爆鸡丁,吃鱼香肉丝");

5.写一个字符串的一部分

void write(String str, int off, int len)

代码案例: fw.write("abcdefg", 1, 3);//跳过1个写入3个

读取字符流

构造方法

通过传入file对象参数,创建FileReader对象

FileReader(File file)

代码案例: FileReader fr = new FileReader(file);

传入文件名的方式创建FileReader对象

FileReader(String fileName)

代码案例: FileReader fr = new FileReader("module01/ccc.txt");

成员方法

一次读取一个字符

int read()

代码案例: fr.read();

一次读取一个字符数组

int read(char[] cbuf)

代码案例: char[] cs = new char[3]; fr.read(cs);

字符串中的编码解码问题

成员方法

1.将字符串转化为相应的字节数组

byte[] getBytes()

2.使用指定的编码,将字符串转换为字节数组

byte[] getBytes(String charsetName)

3.使用平台默认的字符集,解码指定的字节数组,转换为字符串

String(byte[] bytes)

4.通过指定的字符集解码指定的字节数组来创建字符串

String(byte[] bytes, String charsetName)

字符缓冲流

介绍

BufferedWriter

将文本写入字符输出流,缓冲字符

构造方法

创建字符缓冲输出流对象: BufferedWriter(Writer out)

代码案例: bw.write(20)

特有方法

换行

void newLine()

代码案例: bw.newLine();

BufferedReader

从字符输入流读取文本,缓冲字符

构造方法

创建字符缓冲输入流对象: BufferedReader(Reader in)

代码案例: br.read();读一个 br.read(c);读一个字符数组

特有方法

每次一行一行,读取数据

String readLine()

代码案例 br.readLine()

转换流

InputStreamReader

构造方法

使用默认字符编码创建InputStreamReader对象

InputStreamReader(InputStream in)

代码案例: OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("myCharStream\\osw.txt"));

使用指定的字符编码创建InputStreamReader对象

InputStreamReader(InputStream in,String chatset)

OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("myCharStream\\osw.txt"),"GBK");

OutputStreamWriter

构造方法

使用默认字符编码创建OutputStreamWriter对象

OutputStreamWriter(OutputStream out)

代码案例: InputStreamReader isr = new InputStreamReader(new FileInputStream("myCharStream\\osw.txt"));

使用指定的字符编码创建OutputStreamWriter对象

OutputStreamWriter(OutputStream out,String charset)

代码案例: InputStreamReader isr = new InputStreamReader(new FileInputStream("myCharStream\\osw.txt"),"GBK");

对象序列化流

对象序列化介绍

1.对象序列化:把对象转换为可以存储或传输的字节序列 的过程

2.这种机制就是使用一个字节序列表示一个对象,该字节序列包含:对象的类型、对象的数据和对象中存储的属性等信息

3.字节序列写到文件之后,相当于文件中持久保存了一个对象的信息。反之,该字节序列还可以从文件中读取回来,重构对象,对它进行反序列化

对象序列化流(ObjectOutputStream)

构造方法

创建一个写入指定的OutputStream的ObjectOutputStream

ObjectOutputStream(OutputStream out)

代码案例: //创建对象输出流 ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("animal.txt"));

序列化对象的方法

将指定的对象写入ObjectOutputStream

void writeObject(Object obj)

代码案例: //Anima类要实现Serializable接口 Anima a = new Anima("大象", 3); //把对象写入 oos.writeObject(a);

对象反序列化流(ObjectInputStream)

实现前提: ObjectInputStream反序列化先前使用ObjectOutputStream编写的原始数据和对象

构造方法

创建从指定的InputStream读取的ObjectInputStream

ObjectInputStream(InputStream in)

代码案例: //创建对象输出流 ObjectInputStream oos = new ObjectInputStream(new FileInputStream("animal.txt"));

反序列化对象方法

从ObjectInputStream读取一个对象

Object readObject()

代码案例: //读取出对象 然后强转为Anima对象 这个过程也叫反序列化 Anima a = (Anima) oos.readObject();

serialVersionUID

概述:

1.serialVersionUID 如果没有写,那么java会自动生成一个数据

2.在序列化的时候serialVersionUID 也会被保存到序列化的数据里

3.在类被修改的时候,serialVersionUID 会被java重新生成一个新的值

4.在反序列化的时候, 会检查之前序列化的数据里的serialVersionUID 和 新生成的serialVersionUID 是否一致,如果不一致,反序列化失败

注意事项

1 如果这个类发生了变动,那么之前序列化的数据依然希望可以反序列化 那么就不要改变这个

2 如果这个类发生了变动,那么之前序列化的数据希望作废不能再反序列化, 那么就把这个值修改一下

例子

private static final long serialVersionUID = 1L;

transient( 会使用 )

特点

给该成员变量加transient关键字修饰,该关键字标记的成员变量不参与序列化过程

代码案例: FileOutputStream fos = new FileOutputStream("module01/aaa/b.txt"); fos.write(99);//写入数字会生成相应码表字母 fos.close();//最后一定要释放资源思维导图模板大纲

注意事项: 一个对象要想被序列化,该对象所属的类必须必须实现Serializable 接口思维导图模板大纲

相关思维导图模板

环境设计各业务版块流程图思维导图

树图思维导图提供 环境设计各业务版块流程图 在线思维导图免费制作,点击“编辑”按钮,可对 环境设计各业务版块流程图  进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:bb759aacdf9404fdef4191a557718654

工艺流程图思维导图

树图思维导图提供 工艺流程图 在线思维导图免费制作,点击“编辑”按钮,可对 工艺流程图  进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:a8e31ea83041e28a9ece5f7d7121fc30