Java的IO流——Java学习笔记
2022/1/15 20:08:01
本文主要是介绍Java的IO流——Java学习笔记,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
IO
流:
流 | 字符流 | 字节流 |
---|---|---|
输入 | reader | InputStream |
输出 | writer | OutputStream |
字节流
字节输出流
OutPutStream字节输出流
-
write(int):一次写入一个字节
-
write(byte[] b)
如果第一个字节是正数(0~127),查询ASCII码表
如果第一个字节是负数,第一个自己与第二个字节组成一 个中文显示,查询GBK
write(byte[],int,int):从数组中从off开始写入,写len个长度
-
close()
FileOutputStream文件字节输出流
构造:
new FileOutPutStream(str); new FileOutPutStream(file); new FileOutputStream(file,append); //true,追加。false,覆盖 //str:文件路径。file:目标文件
换行:\r\n
字:write(“你好”.getByte())
字节输入流
InputStream,所有字节输入流超类
- read(int)
- read(byte[])
- close()
bis = new FileInputStream("b.txt"); len = bis.read(bytes);//返回读入有效个数 System.out.plantln(new String(bytes));
FileInputStream
继承InputStream,文件字节输入流
构造:
new FileInputStream(str); new FileInputStream(file); 1.创建fis对象 2. 将fis对象指向构造的路径文件
字节流中文乱码问题
由于中文在utf-8中,一个汉字占3个字节,在gbk中,一个汉字占2个字节。字节流读入时,单个字节来读入的。显示是一些数字,将数字转为char型时,就汉字与数字不匹配。造成乱码
a.txt中有 “你好” 两个汉字 fis = new FileInputStream("a.txt"); while((len=fis.read())!=-1){ System.out.plantln(len);//显示为 /** 228 189 160 229 165 189 */ } while((len=fis.read())!=-1){ System.out.plantln((char)len); /** ä ½ å ¥ ½ */ }
总结
write(int):将int数据写入到文件中
write(byte[]):一次将数组中的数据写入到文件中
write(byte[],off,len):将数组数据写入文件,从off开始,len个长度
read():读一个字节,返回值int就是读的数据。文件为空时,返回-1
read(byte[]):读入一个数组的数据,返回值是读入长度。没有读入时,返回-1。循环读入时,数组数据会被覆盖。
字符流
字符输入流
Reader:抽象类
- read():一次读取一个字符并返回int。返回-1是读完了
- read(char[]):一次读取一个char数组,返回有效个数,返回-1是读完了
FileReader
构造:
new FileReader(str)
new FileReader(file)
字符输出流
Writer:抽象类
- write(int):将数据写入到内存缓冲区
- write(char[]):一次写入一个char数组
- write(char[],off,len):一次写入len个,从off开始
- write(string)
- flush():将内存中数据刷新到硬盘
- close()
- \r\n换行(win)
FileWriter文件字符输出流
new FileWriter(str)
new FileWriter(file)
new FileWriter(file,append);true续写。false覆盖
IO异常处理
try(FileWriter fw = new FileWriter("a.txt")){ fw = new FileWriter("a.txt"); fw.write("niaho"); }catch(IOException e){ xxx; } 这样定义在try的流对象。会自动关闭,所以不必写
Properties集合
继承于hashtable,是双列集合。唯一一个与IO流结合的集合。可以使用方法store将集合中数据持久化在硬盘中,load方法将硬盘文件读取到集合中。Properties<String,String>
-
setProperty(key,value):存储集合键值
-
getProperty(key):通过键获取值
-
stringPropertyNames():相当于map的keyset方法。获取一个set集合
-
store(流对象,str):将集合内容存入硬盘,str是注释字符串
格式一般是“键=值”
-
load(输入流对象):将目标文件数据按键值对读入到集合中
这篇关于Java的IO流——Java学习笔记的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-12百万架构师第十五课:源码分析:Spring 源码分析:SpringMVC核心原理及源码分析|JavaGuide
- 2025-01-11有哪些好用的家政团队管理工具?
- 2025-01-11营销人必看的GTM五个指标
- 2025-01-11办公软件在直播电商前期筹划中的应用与推荐
- 2025-01-11提升组织效率:上级管理者如何优化跨部门任务分配
- 2025-01-11酒店精细化运营背后的协同工具支持
- 2025-01-11跨境电商选品全攻略:工具使用、市场数据与选品策略
- 2025-01-11数据驱动酒店管理:在线工具的核心价值解析
- 2025-01-11cursor试用出现:Too many free trial accounts used on this machine 的解决方法
- 2025-01-11百万架构师第十四课:源码分析:Spring 源码分析:深入分析IOC那些鲜为人知的细节|JavaGuide