java–基础–16.2–IO流–FileInputStream,FileOutputStream
1、字节流
|--字节流
|--字节输入流
InputStream ------抽象类
int read():一次读取一个字节
int read(byte[] bys):一次读取一个字节数组
|--FileInputStream ------extends InputStream
|--BufferedInputStream ------extends FilterInputStream------extends InputStream
|--ByteArrayInputStream ------extends InputStream
|--StringBufferInputStream ------extends InputStream
|--字节输出流
OutputStream ------抽象类
void write(int by):一次写一个字节
void write(byte[] bys,int index,int len):一次写一个字节数组的一部分
|--FileOutputStream ------extends OutputStream
|--BufferedOutputStream ------extends FilterOutputStream------extends OutputStream
|--ByteArrayOutputStream ------extends OutputStream
2、FileInputStream
2.1、构造方法:
FileInputStream(File file)
FileInputStream(String name)
2.2、常用方法
- int read():一次读取一个字节 ,速度慢
- int read(byte[] b):一次读取一个字节数组,速度比read()快
2.3、案例
// 创建字节输入流对象,读字节速度很慢
FileInputStream fis=new FileInputStream("fos.txt");
int by=0;
while((by=fis.read())!=-1){
System.out.println((char)by);
}
// 释放资源
fis.close();
// 创建字节输入流对象,读字节数组速度比读字节快
FileInputStream fis2 = new FileInputStream("fos.txt");
byte[] bys=new byte[1024];
int len=0;
while((len=fis2.read(bys))!=-1){
System.out.println(new String(bys,0,len));
}
// 释放资源
fis2.close();
输出:
b
b
a
c
c
bbacc
3、FileOutputStream
3.1、构造方法
创建一个向指定 File 对象的文件输出流。
如果文件不存在自动创建文件
- FileOutputStream(File file)
- FileOutputStream(String name)
- FileOutputStream(File file, boolean append) append - 如果为 true,文件追加,false覆盖文件
3.2、常用方法:
- public void write(int b):写一个字节
- public void write(byte[] b):写一个字节数组
- public void write(byte[] b,int off,int len):写一个字节数组的一部分
3.3、案例
FileOutputStream fos=null;
try {
//如果文件不存在自动创建文件
fos=new FileOutputStream("fos.txt",true);
fos.write("bb".getBytes());
fos.write(97);
fos.write("ccc".getBytes(),0,2);
} catch (IOException e) {
e.printStackTrace();
}finally
{
try {
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}