博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
IO流(一)
阅读量:4058 次
发布时间:2019-05-25

本文共 4429 字,大约阅读时间需要 14 分钟。

IO及常用的类

1.文件操作

构造函数 :

public File(String pathname) :根据一个文件或文件夹的路径名封装一个File对象
public File(String parent,String child) :根据父目录的路径名和儿子的名称封装一个File对象
public File(File parent,String child) :根据父目录的File对象和儿子的名称封装一个File对象
public File(URI uri) :根据uri创建新的File实例;

这里写图片描述

(这API翻译有点垃圾啊…)

常用的方法:

public boolean createNewFile():创建文件,如果文件不存在,才创建并且返回true,否则就返回false
public boolean mkdir():创建文件夹,如果不存在,才创建并且返回true,否则就返回false
public boolean mkdirs():创建文件夹,如果路径中有其它目录不存在,那么一并创建。
public boolean delete()删除此抽象路径名表示的文件或目录

public boolean isDirectory() 是否是文件夹

public boolean isFile() 是否是文件
public boolean exists() 是否存在
public boolean canRead() 是否可读
public boolean canWrite() 是否可写
public boolean isHidden() 是否隐藏

public String getAbsolutePath() 获取绝对路径

public String getPath() 获取封装File对象时传递的路径
public String getName() 获取名称
public long length() 获取文件的字节数
public long lastModified() 最后修改的时间的毫秒值

String[] list() 获取当前目录下的所有子File的名称的数组

File[] listFiles() 获取当前目录下的所有儿子File对象的数组


Java流类的类结构图:

这里写图片描述

字节流

字节输出流 OutPutStream

OutPutStream是所有字节输出流的超类;

文件输出流FileOutPutStream

FileOutPutStream:将数据写入文件的输出流;

构造函数:
FileOutputStream(File file)创建一个向指定 File 对象表示的文件中写入数据的文件输出流。
FileOutputStream(String name)创建一个向具有指定名称的文件中写入数据的输出文件流
FileOutputStream对象写出的都是byte[]数组;

boolean append:是否换行(不换行的话会覆盖之前所写的内容)

FileOutputStream(File file,boolean append)创建一个向指定 File 对象表示的文件中写入数据的文件输出流。
FileOutputStream(String name,boolean append)创建一个向具有指定名称的文件中写入数据的输出文件流

System.lineSeparator()获取系统的换行符


字节输入流 InPutStream

InPutStream是所有字节输出流的超类;

文件输出流FileOutPutStream

FileOutPutStream:将文件中获取数据;

FileInputStream(File file) 创建输入流, 关联File对象表示的文件

FileInputStream(String name)创建输入流,关联路径名所表示的文件
FileInputStream(FileDescriptor fdObj) 文件描述符描述已有文件

//用fis读数据(可以读文件中汉字),用fos写数据byte[] buf = new byte[1024];int len = 0;while((len = fis.read(buf)) != -1){fos.write(buf, 0, len);}fis.close();fos.close();

字节输出输入缓冲流

这种流内部维护了一个缓冲区字节数组,因此在读写时非常高效.

BufferedOutputStream:

BufferedOutputStream(OutputStream out) 创建一个新的缓冲输出流,以将数据写入指定的底层输出流。 BufferedOutputStream(OutputStream out, int size) 创建一个新的缓冲输出流,以将具有指定缓冲区大小的数据写入指定的底层输出流。

BufferedInputStream

BufferedInputStream(InputStream in) 创建一个 BufferedInputStream;BufferedInputStream(InputStream in, int size) 创建具有指定缓冲区大小的 BufferedInputStream;

字符流

Writer

OutputStreamWriter:字符流通向字节流的桥梁

构造函数:

public OutPutStreamWriter(OutPutStream out);使用默认字符集
public OutPutStreamWriter(OutPutStream out,Charset cs);使用给定字符集
public OutPutStreamWriter(OutPutStream out,CharsetEncoder enc);使用给定字符集编码器
public OutPutStreamWriter(OutPutStream out,String charsetName);使用指定字符集

OutPutStreamWriter的实例对象osw的主要方法:

osw.write(int c) 写出一个字符osw.write(char[] cbuf) 写字符数组osw.write(char[] cbuf,int off,int len)写字符数组cbuf中,从off开始,共len个字符!osw.write(String str) 写一个字符串osw.write(String str,int off,int len)写一个字符串str中从off开始,共len个字符osw.write();osw.flush()osw.close();

Reader (抽象类)

InputStreamReader 字节流通向字符流的桥梁

构造函数:

public InPutStreamWriter(InPutStream in);使用默认字符集
public InPutStreamWriter(InPutStream in,Charset cs);使用给定字符集
public InPutStreamWriter(InPutStream in,CharsetDecoder dec);使用给定字符集解码器
public InPutStreamWriter(InPutStream in,String charsetName);使用指定字符集

转换流便捷类:FileWriter和FileReader

构造函数 :

public FileWriter(String fileName):底层调用的是 new FileOutputStream(fileName)
public FileWriter(String fileName, boolean append);
public FileWriter(File file);
public FileWriter(File file, boolean append)
public FileWriter(FileDescriptor fd)

FileWriter = FileOutputStream + 本地默认编码表FileReader = FileInputStream + 本地默认编码表所以功能单一.

字符缓冲流

BufferedWriter

构造函数:

BufferedWriter(Writer out)创建一个使用默认大小输出缓冲区的缓冲字符输出流。
BufferedWriter(Writer out, int sz)创建一个使用给定大小输出缓冲区的新缓冲字符输出流

BufferedReader

构造方法

BufferedReader(Reader in)创建一个使用默认大小输入缓冲区的缓冲字符输入流。
BufferedReader(Reader in, int sz)创建一个使用指定大小输入缓冲区的缓冲字符输入流


小结

IO的继承体系:    InputStream:字节输入流        |-- FileInputStream        |-- BufferedInputStream    OutputStream:字节输出流        |--FileOutputStream        |-- BufferedOutputStream    Reader:字符输入流        |-- InputStreamReader                |-- FileReader        |-- BufferedReader    Writer:字符输出流        |-- OutputStreamWriter                |-- FileWriter        |-- BufferedWriter构造函数    1)四大基本流,与文件关联的流,他们的构造函数,直接接收文件!(与文件相关联)        FileInputStream        FileOutputStream        FileReader        FileWriter    2)四大装饰流,它们的构造函数都是接收本体系的顶级父类(本体系的顶级父类)        BufferedInputStream        BufferedOutputStream        BufferedReader        BufferedWriter    3)转换流,把字节流变字符流,因此必然接收字节流。要对应字节输入流或字节输出流        InputStreamReader        OutputStreamWriter

序列化与反序列化


参考自:

你可能感兴趣的文章
【数据结构周周练】005顺序队列与链队 -扑克牌的筛选
查看>>
【数据结构周周练】006队列基本操作-顺序结构及链式结构实现
查看>>
C++类、结构体、函数、变量等命名规则详解
查看>>
【数据结构周周练】007顺序结构实现完全二叉树操作- 求编号i与j最近公共祖先结点
查看>>
C++ goto语句详解
查看>>
【数据结构周周练】008 二叉树的链式创建及测试
查看>>
【数据结构周周练】009 二叉树的先序、中序、后序遍历(递归算法实现)
查看>>
【数据结构必备基本知识】递归与迭代的联系、区别与优缺点对比详解
查看>>
【数据结构周周练】010 递归算法实现二叉树的创建与遍历
查看>>
【数据结构周周练】011 非递归算法实现二叉树的遍历
查看>>
【数据结构周周练】012 利用队列和非递归算法实现二叉树的层次遍历
查看>>
【数据结构周周练】013 利用栈和非递归算法求二叉树的高
查看>>
【数据结构周周练】014 利用栈和非递归算法求链式存储的二叉树是否为完全二叉树
查看>>
【数据结构周周练】015 利用递归算法创建链式存储的二叉树并转换左右孩子结点
查看>>
【数据结构周周练】016 利用递归算法及孩子兄弟表示法创建树、遍历树并求树的深度
查看>>
【数据结构周周练】017 利用递归算法及孩子兄弟表示法创建森林、遍历森林并求森林的叶子结点个数
查看>>
【数据结构必备基本知识】数据结构常用预定义常量、类型及头文件
查看>>
【数据结构周周练】018 利用递归算法及中序遍历将二叉树线索化并遍历
查看>>
【数据结构周周练】019 利用递归算法创建二叉排序树并遍历
查看>>
【数据结构周周练】020 二叉排序树的排序与迭代查找
查看>>