IO流
Io流:
I:input 输入(读取)
O:output 输出(写入)
流:数据(字符,字节)一个字符=2个字节 1个字节=8个二进制位
1.输入:把硬盘中的数据,读取到内存中使用
2.输出:把内存中的数据,写入到硬盘中保存
1.字节流:输入:inputstream 输出:outputstream
2.字符流:输入:reader 输出:writer
一切皆为字节
字节输出流的使用步骤
1.创建一个fileoutputstream对象,构造方法中传递写入数据的目的地
2.调用fileoutputstream对象中的方法write,把数据写入到文件中
3.释放资源
Fileoutputstream f=new fileoutputstream(路径)(可以创建一个文件,不能创建文件夹)
F.write(字节数据);
F.close();//释放资源
写数据时,会把十进制的整数转换为二进制整数97;
任意的文本编译器(记事本,notepad++。。)再打开文件的时候,都会查询编码表
一次写多个字节的方法:
创建fileoutputstream对象
Fileoutputstream f=new fileoutputstream(路径)(new file(绑定写入路径))
调用对象方法write,把数据写到文件中
写入100;
Byte[]bytes={49,48,48}
f.write(bytes)
一次写多个字节:
如果第一个字节是正数(0-127),那么显示时会查询ascii表;
如果写的第一个为负数,那么第一个字节和第二个字节,两个字节组成一个中文显示;查询gbk表;
Write(byte[] b,int off,int len):把数组的一部分写入到文件中
Int off:数组的开始索引
Int len:写几个字节
f.write(bytes,1,2)
写入字符串的方法:
Byte[]getbytes()把字符串转换为字节数组
Byte[] bytes2=“你好”.getbytes();
数据的追加写和换行写
追加写(续写):
Fileoutputstream f=new fileoutputstream(路径,true)true(追加写的开关)
f.write(“你好”.getbytes());
换行写:“\r\n”
字节输入流:inputstream(所有字节输入流的超类)
Read();读取字节
Fileinputstream:文件字节输入流
把硬盘中的数据传入到内存中使用
字节输入流的使用步骤:
1.创建对象,构造方法中绑定数据
2适用对象中的read方法,读取文件
3.释放资源
Fileinputstream f=new fileinputstream(“路径”)
f.read();返回-1读取完毕
While循环,结束条件为-1
布尔表达式(len=f.read())!=-1
1.f.read(读取一个字节)
2.Len=f.read();把读取到的字节赋值给变量len
3.(len=f.read())!=-1:判断变量len是否等于-1
字节输入流一次读取多个字节的方法
明确两件事:
1.方法的参数byte[]的作用
起到缓冲作用,存储每次读取到的多个字节
数组长度一般定义为1024(1kb)或1024的整数倍
2.方法返回值int是什么
每次读取的有效字节个数
byte[] bytes = new byte[1024];//存储读取到的多个字节
int len = 0; //记录每次读取的有效字节个数
while((len = fis.read(bytes))!=-1){
System.out.println(new String(bytes,0,len));//打印输出有效的
}
文件复制练习:一读一写
文件复制的步骤:
1.创建一个字节输入流对象,构造方法中绑定要读取的数据源
2.创建一个字节输出流对象,构造方法中绑定要写入的目的地
3.使用字节输入流对象中的方法read读取文件
4.使用字节输出流中的方法write,把读取到的字节写入到目的地的文件中
5.释放资源(先关写的,后关闭读的;如果写完了,肯定读取完毕了)
字符流(可以用来读取含中文内容的)
字符输入流:
Reader是字符输入流最顶层的父类(抽象类)
子类(Filereader)
作用:把硬盘中的文件以字符的形式读取到内存中
字符输入流使用步骤(与字节流相同)
字符输出流(输出流都有flush方法,输入流没有)
Writer字符输出流最顶层类,是一个抽象类
Filewriter(子类)文件字符输出流
作用:把内存中的字符数据写入到硬盘中
字符输出流的使用步骤:
与字节输出流相同(调用flush方法,把内存缓冲区的数据刷新到文件中);可以直接输出字符串。
flush方法和close方法的区别
- flush :刷新缓冲区,流对象可以继续使用。
- close: 先刷新缓冲区,然后通知系统释放资源。流对象不可以再被使用了。
Properties集合
继承了hashtable集合,是想了map借口
用的比较多,唯一一个可以读写数据的集合
可以使用properties集合中的方法store,把集合中的临时数据,齿芥花写入到硬盘中存储
可以使用load方法,把硬盘中保存的文件,读取到集合中使用。 |
|