Java定义两个超类(抽象类)
java.io.InputStream与java.io.outputStream 1
分为:节点流,处理流
文件流是一对低级流,用于读写文件
FileOutputStream输出流文件流创建时,如果该文件不存在会自动将其创建(前提是该文件所在目录必须存在)
FileOutputStream提供两种构造器FileOutputStream(String path);
FileOutputStream fos = new FileOutputStream("fos.dat");
FileOutputStream(File file);
File file = new File("fos1.dat");
FileOutputStream fos1 = new FileOutputStream(file);
向文件输入数据
void write(int d)
向文件中写入1个字节,写入的内容是输入int类型d 的低八位,其他丢弃
FileOutputStream fos = new FileOutputStream("fos.dat");
fos.write(2);
块写文件
void write(byte[] data)
void write(byte[] data,int offset,int len)//offset 是byte数组的偏移量,len是byte数组的长度,即从数组的offset下标开始,写入len长度
FileInputStream输入流读取文件
int read():从文件中读取一个字节,返回的int值低八位有效,如果返回int的值为整数-1,则已经读完了
int read(byte[] data):块读数据,从文件中一次性读取给定的data数组总长度的字节数,并返回实际读取的字节数(最后一次读取,有很大的可能小于byte数组的长度),如果返回整数-1,表示是已经读取到了文件末尾
复制文件的例子public class CopyDemo2 {
public static void main(String[] args) throws IOException {
FileInputStream fis = new FileInputStream("sogou_pinyin_98a.exe");
FileOutputStream fos = new FileOutputStream("sogouCopy.exe");
byte[] dat = new byte[1024 * 10];//定义byte数组长度为10k
int len;
long start = System.currentTimeMillis();
while ((len = fis.read(dat)) != -1) {//如果读到的数组长度不为-1,则循环继续
fos.write(dat,0,len);
}
long end = System.currentTimeMillis();
System.out.println("复制完毕,耗时:"+(end-start)+"毫秒");
fis.close();
fos.close();
}
}
覆盖模式
如果指定文件存在,则文件流在创建时会将文件内容删除
FileOutputStream fos = new FileOutputStream("sogouCopy.exe");
追加模式
若指定文件存在,文件流会将写出的数据陆续追加到文件中
FileOutputStream fos1 = new FileOutputStream("demo2.txt",true);



