仅供自己复习回顾使用
先记住,无论使用何种方法输入输出文件,一定要最后关闭文件
Io流不难但是东西多。
文件中的内容-->java程序 输入流
java程序----->文件中 输出流
进行输入输出内容时,有两种方式,一种是以字节的方式进行读取,一种是以字符的方式进行读取。 两者的区别是:如果用字节流的方式进行读取,它是以每个字节为单位,当然这样的效率肯定慢,以字符读取的的方式,效率快,但是对于那些声音、文本文件这些二进制文件如果使用字符读取,可能会发生解析失败。所以总的来说,对于纯文本文件,用字符的读取方式,如果是二进制文件(声音、视频文件),用字节的方式读取。
字节读取方式:父类(抽象类):InputStream 输入流 OutputStream: 输出流
字符读取方式:父类: Reader (读入程序) Writer(写到文件中)
父类是抽象类,不能直接使用。使用字节输入输出时,对应的是FileInputStream 和FileOutputStream
一、基本流二
1.以字节形式读
①FileInputStream
在进行,文件向java程序输入文件时,用FileInputStream效率是在太低,这个FileInputStream对象在read时,可以是向一个数组中读,所以可以提前new一个字节数组,定义的字节数组多大,相当于它一次性可以读多少个字节,提升了效率。
②FileOutputStream 字节形式向文件中输出内容
2、以字符形式读写
FileReader FileWriter
与字节读写大同小异,都是一个套路,看看代码吧
二、处理流(对上诉所说的基本流进行了封装)
处理流就是类,有BufferedImputStream、BufferedOutputStream、BufferedWriter、BufferedRead
这个类就是修饰者模式,意思是,BufferedImputStream、BufferedOutputStream、BufferedWriter、BufferedRead这几个类内部有对应的ImputStream、OutputStreamWriter、Read抽象类属性,所以它们是可以处理对应的子类的方法,他的还出就是,而且还处于构造方方法的使用方式,就是多态
例如,拿BufferedWriter举例,只需定义了那么他的构造函数是可以,里边参数可以是FileWriter、CharArrayWriter、PipeWriter,根据动态绑定,可以完成不同的 *** 作,
都是大同小异,原理都一样
三、 对象流(就是实现了序列化和反序列化),前一篇文章已经写了,就不多赘述了
四、标准输入输出流
类型 默认设备
System.in 标准输入 InputStream 键盘
编译类型是InputStream 运行类型是BufferedInputStream
System.out 标准输出 PrintStream 显示器
编译类型 PrintStream 运行类型 PrintStream
五、转换流(属于字符输入输出)
目的是使参数字节流转换为字符流,而且主要解决的问题是字符编码问题
关于字符编码问题,例如,我们用记事本写的文档,默认是UTF-8模式,用在读的时候是可以正常读入读出的,但是,如果记事本的保存格式为
这些其他的格式,如果还用以前的方法读取的话,读出来的文件是乱码的,所以InputStreamReader和OutputStreamWriter就解决了这个问题,参数是FileInputStream或FileOutputStream,但是读写的时候,依旧是要用BufferedWriter和BufferedReader,作为它们的参数,,这样来说,就像是InputStreamReader包装了FileInputStream,而BufferedReader又包装了
InputStreamReader。。前面我们讲过了BufferedReader,这个构造函数里边的参数是可以传任何实现了Reader的子类。话不多说,上代码
InputStreamReader:
OutputStreamWriter:
六、打印流
(printStream printWriter)以字节打印,以字符打印
看名字就知道,打印流只有输出流,没有输入流
字符流打印
字节流打印
看看代码还是好理解的,如果要指定位置输出,就在构造方法里,传入Writer的实现子类,带有输出的地址
七、proverity(文件集合)
举例:当有一个数据库文件,里边有属性,name=zhangsan age=18 pwd=123456 等等
按之前学的。我们当然可以将这个文件读入java程序,但是,如果我们只想要值呢,或者只要age,这样就很麻烦了,proverity文件集合就解决了这个麻烦
他的方法有①load:加载配置文件的键值对到Properties对象
②list:将数据显示到指定设备
③getProperty(key):根据键获得值
④setProperty(key,value):设置键值对到Properity对象
⑤store:将Property中的键值对存储到配置文件
注意事项:用Properties对象调用load方法时,里边的参数可以是new FileReader,或者是
new FileInputStream,一个是以字节流,或者字符
当调用store方法时,也是可以传两种,
new FileWriter()或new FileOutputStream,,一定要注意,如果传的是第二种以字节的方式,如果我们要向配置文件中传值的时候,如果键或值是汉字,对应到配置文件中就是这个汉字对应的unicode值,而不是真正的汉字。用new FileWriter()即使是汉字也没事,因为本身即是字符串传输
暂时就知道这几个,学的多了在补充别的
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)