IO概述:
I: input( 读取 ) 把硬盘中的数据,读取到内存中使用
O: output(写入) 把内存中的数据,写入到硬盘中保存
流:数据(字符,字节)1个字符=2个字节 ,1个字节=8个二进制位
IO流:输入输出流
一切都是字节:
一切的文件数据在储存是,都是以二进制的形式存储,都是一个一个的字节,那么传输时一样如此
字节输出流
java.io.OutputStream类:此抽象类是表示输出字节流所有类的超类。输出流接受输出字节并将这些字节发送到某个接受器。
成员方法:
public void close():关闭输出流并释放此流相关联的任何系统资源
public void write(byte[] b):将b.length字节从指定的字节数写入此输出流
public void write(byte[] b,int off,int len):从指定的字节数组写入len字节,从偏移量off开始输出到此输出流
文件字节输出流:FileOutputStream,把内存中的数据写入到硬盘文件中
构造方法:
FileOutputStream(String name)创建一个项具有指定名称的文件中写入数据的输出文件流
FIleOutputStream(File file)创建一个向指定File对象表示的文件中写入数据的文件输出流
String name:文件路径 file:文件
作用:
1、创建一个FileOutputStream对象
2、会根据构造方法中传递的文件/文件路径,创建一个空的文件
3、会把FileOutputStream对象指向创建好的文件
写入数据的原理:
java程序---->JVM----->OS----->OS调用写数据的方法---->把数据写入到文件中
字节输出流一次写一个字节:
1、创建一个FileOutputStream对象,构造方法中传递写入数据的目的地
2、调用FileOutputStream方法中的write.把数据写入到文件中
3、释放资源(流使用会占用一定的内存,使用完毕要把内存清空,提高程序的效率)
写数据,把十进制整数转换为二进制整数
任意的文本编辑器,在打开文件的时候,都是查询编码表,把字节转换为字符表示
字节输出流一次写多个字节:
public void write(byte[] b):将b.length字节从指定的字节数写入此输出流
如果写的第一个字节是正数(0-127),那么显示的时候会查询ASCII表
如果写的第一个字节是负数,那么第一个字节会和第二个字节,两个字节组成一个中文显示,查询系统默认码表(GBK)
public void write(byte[] b,int off,int len):从指定的字节数组写入len字节,从偏移量off开始输出到此输出流
off:开始索引 len:长度
可以用String类中的方法把字符串,转化为字节数组
byte[] getBytes():把字符串转换为字节数组
追加写/续写:
FileOutputStream(String name,boolean append):创建一个向具有指定name的文件中写入数据的输出文件流
FileOutputStream(File file,boolean append):创建一个向指定File对象表示的文件中写入数据的文件输出流
name File:目标路径
append
true: 创建对象不会覆盖源文件,继续在文件的末尾追加写数据
false:创建一个新文件,覆盖源文件
写换行:
windows:\r\n linux: /n mac:/r
字节输入流
java.io.InputStream,所有字节输入流的超类
方法:
int read():从输入流中读取数据的下一个字节
int read(byte[] b):从输入流中读取一定数量的字节,并将其储存在缓冲区数组b中
void close():关闭输入流并释放与该流关联的所有系统资源
FileInputStream:文件字符输入流
作用:把硬盘文件中的数据,读取到内存中使用
构造方法:
FileInputStream(String name)
FileInputStream(File file)
name,file:读取文件的数据源
读取数据的原理:硬盘--->内存
java--->JVM---->os---->读取文件
字节输入流使用:
1、创建FileInputStream对象,构造方法中绑定要读取的数据源
2、使用FileInputStream对象中的read,读取文件
3、释放资源
掌握循环的写法
字节输入流一次读取多个方法:
int read(byte[] b):从输入流中读取一定数量的字节,并将其储存在缓冲区b中
byte[]b 缓冲作用,储存每次读取到的多个字节。数组长度一般定义为1024(1kb)或者1024的整数倍
返回值int 每次读取的有效字节个数
String类的构造方法
String(byte[] bytes):把字节数组转换为字符串
String(byte[]bytes,int offset,int length):把字节数组的一部分转换为字符串
offset:数组的开始索引,length:长度
练习:文件复制
把桌面上a.txt中的内容复制到桌面b.txt中