玩转JAVA之文件流操作
基本IO操作:流是单向的,不局限于文件。流根据方向不同分为输入流与输出流,参照点为当前程序。输入流用来读取数据,输出流用来写出数据。InputStream,抽象类,定义了输入流的读取字节方法,所有的输入流都继承自它,outputStream则为输出流的父类。
流分为:节点流和处理流。节点流也叫低级流,是负责读写数据的流,在读写操作中必须要有低级流,数据源明确。处理流:也叫高级流,高级流是不能独立存在的,必须用于处理其他流,处理其他流的目的是为了简化读写数据中的操作。
FileOutputStream,文件输出流,是一个低级流,作用是向文件中写出字节。
FileOutputStream fos = new FileOutputStream(file); //传文件
String str =”问问”;
//byte str.getBytes();//将当前字符串按系统默认转换为一组字节
//byte str.getBytes(String csn);//将字符串转换为给定的字符集
byte[] data = str.getBytes(“UTF-8”);
fos.write(data);
fos.close(); //注意:默认创建的FOS是覆盖写操作,FOS会将文件数据 (若有数据)全部覆盖,然后开始写入。
文件输出流追加写操作:在创建FOS时,若指定第二个参数,并且该值为true时,则是追加写操作,那么本次通过FOS写出的内容就会被追加到文件末尾。
FileOutputStream fos = new FileOutputStream(file,true);//追加写
fos.write(“你好”,”UTF-8”);
fos.close();
FileInputStream,文件输入流,是一个低级流,用于从文件中读取字节。
FileInputStream fis = new FileInputStream(file);//读文件
byte[] data =new byte[100];
int len =fis.read(data);///返回实际读取的字节数
String str =new String(data,0,len,”UTF-8”);//将实际读取的字节数转换为字符串
System.out.print(str);
fis.close();
使用文件流复制文件:
FileInputStream fis = new FileInputStream(file);//
FileOutputStream fos = new FileOutputStream(files,true);//写入
int len =-1; byte[] buf =new byte[1024*10];
while((len=fis.read(buf))!-1){
fos.write(buf,0,len);
}
fos.close();fis.close();