首页 > 其他 > 详细

io流

时间:2021-05-17 15:25:42      阅读:12      评论:0      收藏:0      [点我收藏+]

io流

java、io、file类的使用-->计算机操作系统中的文件和文件夹

file类

  • file能新建,删除,重命名文件和目录,但file不能访问文件内容本身

  • file对象可以作为参数传递给流的构造函数,注意\在文件是路径的分隔符,但是在java中的意思是转接符,在java中\或/才是文件的分隔符

  • 也可以使用Flie separato作为文件的分隔符

  • f.getName获取文件名/当前的文件夹名称

  • f.getPath获取文件当前的路径/获取文件,就是new file时候写的路径(相对路径)就是写的什么路径就是什么路径。

  • f.getAbsolutepath获取文件的绝对路径

  • f.getAbsoluteFile返回一个用当前的文件的绝对路径构建的file对象

  • f.getparent返回当前文件或者文件夹的父级路径

  • f.renameToCnewFile(D:\xxx\xxx\xxx\(改后的文件名.txt));给文件或者文件夹重命名

  • exists判断文件或者文件夹是否存在

  • f.canwrite判断文件是否可写

  • f.canRead判断文件是否可读

  • f.isFile判断当前的file对象是不是文件

  • f.isDirectory判断当前的file对象是不是文件夹目录

  • f.lastModified获取文件的最后修改时间,返回的是一个毫秒数

  • f.length返回文件的长度,单位是字节

  • createNewFile新建文件

  • f.delete删除文件

  • f.mkdir创建单层目录,f.mkdirs创建多层目录

  • lis返回的是当前文件夹的子集名称,包括目录和文件

  • Fise f = new File(“D:\xxx”);

    String[] f1 = file.list()for循环(增强)

  • listFiles返回的是当前文件夹的子集的对象,包括目录和文件

File类递归遍历文件

java io原理

输入input 输出output

  • 不论输入还是输出,都是指的计算机

流的分类:

  • 按操作数据单位不同分为:字节流(8it)字符流(16but)
  • 按数据流的流向不同分为:输入流,输出流
  • 按流的角色不同分为:节点流,处理流

抽象基类 字节流 字符流

输入流 inputStream Reader

输出流 outputStream wirter

文件字节输出流: byte

  • in.read()方法有一个返回值,返回值是读取的数据的长度,如果读取到最后一个数据,还会向后读一个。这个时候返回值就是-1,也就意味着当in.read的返回值是-1时,整个文件就读取完毕了。

  • in.close 流在使用完毕之后一定要关闭

  • new String(x,x,x)

    • 参数1是缓冲数据的数组
    • 参数2是从数组的那个位置开始转换字符串
    • 参数3是总共转化几个字符

文件字节输入流

wrist把数据写到内存中

flush把内存中的数据刷写到硬盘上

字节流复制文件

注意:文件字节流非常通用,可以用来操作字符的文档,还可以操作任何的其他类型文件(图片,压缩包)引用字节流直接使二进制。

文件字符流 char接受

FileReader fr = new FileReader(inpath)

创建文件字符输入流的对象

输出流

File writer

字符流复制文件

字符流完成拷贝文件,字符流只适合操作内容是字符文件

注意:在写一个文件时,如果目录下有同名文件将被覆盖,在读取文件时必须保证该文件已存在,否则出现异常。

缓冲流

  • BufferedinputStream
  • BufferedoutputStream
  • BufferedReads
  • BufferedWriter

缓冲流就是先把数据缓冲内存里,在内存中去做io操作,基于内存的io操作大概能比基于硬盘的io操作快75000多倍。

缓冲字节流

  1. 创建文件输入流对象
  2. 把文件输入流放到缓冲子街输入流对象

关闭流的时候,本着最晚开的最早关,依次关。

缓冲字符流

转换流

转换字节输入流为字符输入流inputStreamReader

注意:在转换字符流的时候,设置的字符集编码要与读取的文件的数据的编码一致,否则就会出现乱。

InputStreamReader = new InputStreamReader(xx,编码)

转换字节输出流为字符输出流outputStreamWriter

编码

  1. 所有的文件都是有编码格式
  2. 对于我们来说,txt和java文件一般来讲有三种编码,ISO8859-1西欧额编码是纯粹英文编码,不是汉子
  3. GBK和UTF-8这两种编码,适用了中文和英文,一般使用UTF-8编码

标准输入流和输出流

system.in system.onu

打印流

  • print steam字节打印流
  • print writer字符打印流

用数据输出流写到文件中的基本数据类型的数据是乱码的,不能直接辨认出来,需要数据输入流来读取。

DatainputStream数据输入流

对象流:

因为保存对象到硬盘(对象的持久化)和对象的网络传输,需要做这两件事,就产生了对象的输入流和输出流。

序列化(serialize):用objectOutputStream类将一个java对象写入io流中

反序列化(Deserialize):用objectinputStream类从io流中恢复该java对象。

序列化与反序列针对的是对象的各种属性,不包括类的属性

为了让某个类是可序列化的,该类必须实现如下两个接口之一:

SeriaLizable    Externalizable

serialverasionUID用来表明类的不同版本间的兼容性

随机存取流

RandomAccessFile类支持随机访问

字节流写数据换行 :

  • window=\r\n
  • linux:\n
  • mac:\r

finally:在异常处理时提供finally快来执行所有清除操作,比如说io流中的释放资源。

特点:被finally控制的语句一定执行,除非jvm退出,汉子在存储的时候,无论选择哪种编码存储,第一个字节都是负数。

Vnicode字符集:为表达人以语言的任意自付二设计,是业界的一种标准,也被称为同意吗,标准的玩过吗,他最多适用4个字节的数字来表达每个字母,符号,或者文字,有三种编码方法:UTF-8、UTF-16、UTF-32。

flush()刷新刘,还可以写数据

close()关闭流

fileReader改进

File Writer

字符缓冲流特有功能

writer void nextLine写一行行分隔符

Reater public String readLine()读一行文字

字节流可以复制任意文件数据,有4种方式,一般采用字节缓冲流一次读写一个字节数组的方式。

字符流只能复制文本数据,有5中凡是,一般采用字符缓冲流的特有功能呢个。

io流

原文:https://www.cnblogs.com/qidai233333/p/14776831.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!