文件字节流
- FileInputStream
通过字节的方式读取文件,适合读取所有类型的文件(图像、视频等)
全字符请考虑FileReader
package com.io.cx2;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
/**
* 四个步骤: 分段读取 文件字节输入流
* 1、创建源
* 2、选择流
* 3、操作
* 4、释放资源
*/
public class test3 {
public static void main(String[] args) {
//1、创建源
File src = new File("D:\\EclipsePlace\\IO\\src\\com\\io\\cx2\\text.txt");
//2、选择流
InputStream is =null;
try {
is =new FileInputStream(src);
//3、操作 (分段读取)
byte[] flush = new byte[1024*10]; //缓冲容器
int len = -1; //接收长度
while((len=is.read(flush))!=-1) {
//字节数组-->字符串 (解码)
String str = new String(flush,0,len);//解码实际大小
System.out.println(str);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally {
//4、释放资源
try {
if(null!=is) {
is.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
- FileOutputStream
通过字节的方式写出或追加数据到文件,适合所有类型的文件(图像、视频)
全字符请考虑 FileWriter
package com.io.cx2;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
/**
* 文件字节输出流
*1、创建源
*2、选择流
*3、操作(写出内容)
*4、释放资源
*/
public class test4 {
public static void main(String[] args) {
//1、创建源
File dest = new File("dest.txt");//文件不存在会自动创建
//2、选择流
OutputStream os =null;
try {
os = new FileOutputStream(dest,true);//不加true——覆盖,加了true会追加
//3、操作(写出)
String msg ="这个文件是新建的\n";
byte[] datas =msg.getBytes(); // 字符串-->字节数组(编码)
os.write(datas,0,datas.length);
os.flush();
}catch(FileNotFoundException e) {
e.printStackTrace();
}catch (IOException e) {
e.printStackTrace();
}finally{
//4、释放资源
try {
if (null != os) {
os.close();
}
} catch (Exception e) {
}
}
}
}
总结——和基础的File类的不同操作之处:
- 操作一样都是四步骤
- outputStream的文件可以不存在,而inputStream的文件必须存在
- FileOutputStream可以进行追加操作——标识为真
- 读入的read和写出的write,flush