IO流的基本认识

输入流:InputStream或者Reader
输出流:OutputStream或者Writer

1.在实际项目中,所有的IO操作都应该放到子线程中操作,避免堵住主线程
2.File Input Stream在读取文件内容时,如果我们传入文件的路径下的文件不存在,那么执行readFile()方法时回报FileNotFoundException异常
3.FileOutputStream再写入文件时,如果传入文件的路径下的文件不存在时,在执行writeFile()方法时,会默认给我们创建一个新的文件,不报异常
boolean file.madir():创建目录,创建成功,返回true,失败返回false,已存在,返回false
判断:
boolean file.exists()//文件是否存在
boolean file.isFile()//是否是文件
boolean file.isDirectory()//是否是目录
boolean file.isHidden()//是否隐藏
boolean file.isAbsolute()//是否为绝对路径
boolean file.canRead()//是否可读
boolean file.canWrite()//是否可写
boolean file.canExecute()//是否可执行
获取文件信息:
String file.getName()//获取文件的名字
String file.getParent()//获取绝对路径
File file.getParenFile()//获取父文件如果文件有父目录,那么返回父目录的绝对路径,(比如:E:\cat) , 如果文件本身就在磁盘的根目录,那么返回磁盘的路径,(比如:E:\)
long time = file.lastModified() ; //返回文件最后一次修改的时间
Date dt = new Date(time);
boolean renameTo(File file) //文件命名
long file.length() //返回文件的大小,单位字节
boolean file.delete() //删除文件
String[] file.list() //获取该目录下的所有的文件的名字。如果file为文件,返回值为null,在使用时记得判空;但是如果file为目录,那么返回这个目录下所有文件的名字,只是名字,不含路径;如果file是一个空目录,返回一个长度为0的数组;从上面的结果可以看出,list() 方法,只是对file为目录时有效,当file为一个文件的时候,该方法毫无意义。
File[] file.listFiles() //获取该目录下的所有的文件。如果file为文件,返回值为null,在使用时记得判空;但是如果file为目录,那么返回这个目录下所有的文件 ;如果file是一个空目录,返回一个长度为0的数组;从上面的结果可以看出,listFiles() 方法,只是对file为目录时有效,当file为一个文件的时候,该方法毫无意义。

bufferedInputStream和bufferedOutputStream类就是实现了缓冲功能的输入流/输出流。使用带缓冲的输入输出流,效率更高,速度更快。
int available(); //返回底层流对应的源中有效可供读取的字节数
void close(); //关闭此流、释放与此流有关的所有资源
boolean markSupport(); //查看此流是否支持mark
void mark(int readLimit); //标记当前buf中读取下一个字节的下标
int read(); //读取buf中下一个字节
int read(byte[] b, int off, int len); //读取buf中下一个字节
void reset(); //重置最后一次调用mark标记的buf中的位子
long skip(long n); //跳过n个字节、 不仅仅是buf中的有效字节、也包括in的源中的字节

什么时候flush()才有效呢?
答案是:当OutputStream是BufferedOutputStream时。

buffer其实就是一个byte[]

bufferedReader和bufferedWriter
int read() //读取单个字符。
int read(char[] cbuf, int off, int len) //将字符读入数组的某一部分。
String readLine() //读取一个文本行。
boolean ready() //判断此流是否已准备好被读取。
void reset() //将流重置到最新的标记。
long skip(long n) //跳过字符。
void close() //关闭该流并释放与之关联的所有资源。
void mark(int readAheadLimit) //标记流中的当前位置。
boolean markSupported() //判断此流是否支持 mark() 操作(它一定支持)。
void close() // 关闭此流,但要先刷新它。
void flush() //刷新该流的缓冲。
void newLine() //写入一个行分隔符。
void write(char[] cbuf, int off, int len) //写入字符数组的某一部分。
void write(int c) //写入单个字符。
void write(String s, int off, int len) //写入字符串的某一部分。

InputStreamReader、OutputStreamWriter字节流与字符流的桥梁
void close() // 关闭该流并释放与之关联的所有资源。
String getEncoding() //返回此流使用的字符编码的名称。
int read() //读取单个字符。
int read(char[] cbuf, int offset, int length) //将字符读入数组中的某一部分。
boolean ready() //判断此流是否已经准备好用于读取。
void write(int c) //写入的字符长度
void write(char cbuf[]) //写入的字符数组
void write(String str) //写入的字符串
void write(String str, int off, int len) //应该写入的字符串,开始写入的索引位置,写入的长度

ByteArrayInputStream\ByteArrayOutputStream字节数组流
void close() // 关闭该流并释放与之关联的所有资源。
String getEncoding() //返回此流使用的字符编码的名称。
int read() //读取单个字符。
int read(char[] cbuf, int offset, int length) //将字符读入数组中的某一部分。
boolean ready() //判断此流是否已经准备好用于读取。
void write(int b)
void write(byte b[], int off, int len)
void writeTo(OutputStream out)
byte toByteArray()[]
void close()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值