OutputStream 字节输出流
- java.io.OutputStream 所有字节输出流的超类
- 作用: 从Java程序写出文件
- 字节: 这样流每次只操作文件中的1个字节
- 写任意文件
- 方法都是写入的方法
- write(int b) 写入1个字节
- write(byte[] b) 写入字节数组
- write(byte[] b,int,int length)写入字节数组,int 开始写入的索引, Len 写几个
- close() 方法,关闭流对象,释放与次流相关的资源
- 流对象,操作文件的时候, JVM不做caozuo,依赖操作系统
FileOutputStream
流对象使用步骤:
- 创建流子类的对象,绑定数据目的
- 调用流对象的方法write写
- close释放资源
流对象的构造方法,可以创建文件,如果文件存在,直接覆盖。
import java.io.FileOutputStream;
import java.io.IOException;
public class FileOutputStreamDemo {
public static void main(String[] args) throws IOException {
FileOutputStream fos = new FileOutputStream("e:\\a.txt");// 流对象的构造方法,可以创建文件,如果文件存在,直接覆盖
//流对象的方法write写数据
//写1个字节
int i=64;
fos.write(i);//ASC码表
fos.write(97);
//48--0
fos.write(48);
fos.write(49);
fos.write(48);
//写字节数组
byte[] bytes = {65,66,67,68};
fos.write(bytes);
//写字节数组的一部分,开始索引,写几个
fos.write(bytes, 1, 2);
byte[] bytes1 = {-65,-66,-67,-68};//负数代表汉字,GBK编码啊中一个汉字两个字节
fos.write(bytes1);
fos.write("abcd\n".getBytes());//WRITE中只可以写字节,不可以写字符串
function();//文件续写
function();
}
private static void function() throws IOException {
FileOutputStream fos = new FileOutputStream("e:\\a.txt",true);
fos.write("apped\n".getBytes());//换行\n\r
}
}
InputStream 字节输入流
FileIntputStream
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
public class FileInputStreamDemo {
public static void main(String[] args) {
/*程序->虚拟机JVM->OS操作系统(实际是操作系统在读数据)
*/
FileInputStream fis = null;
try {
fis = new FileInputStream("e:\\a.txt");
int i=fis.read();
System.out.println(i);
i=fis.read();//一次只读一个字节,当到达结尾返回数值(-1);
System.out.println(i);
System.out.println(fis.read());
while((i=fis.read())!=(-1)){
System.out.print((char) i);//Int类型向字符转换
}
System.out.println("\n=========================================");
File f=new File("e:\\a.txt");
fis = new FileInputStream(f);
// System.out.println(f.length());
// byte[] b=new byte[(int)f.length()];
byte[] b=new byte[9];// 将读到的指定长度字节组存入数组b中
int l=fis.read(b);//返回字节的长度,当读到末尾时返回-1
System.out.println(new String(b));//查询编码表
System.out.println(l);
while((i=fis.read(b))!=(-1)){
System.out.print(new String(b,0,i));
}
}catch(IOException ex){
System.out.println(ex.getMessage());
}finally {
try{
fis.close();
}catch (IOException ex){
throw new RuntimeException("文件关闭失败");
}
}
}
}