- 概念
IO流用于处理设备之间的数据传输 硬盘到内存是read(输入) 内存到硬盘是write(输出)
Java对数据的操作是通过流的方式
Java用于操作流的类都在IO包中
流按流向分为两种:输入流和输出流
流按操作类型分为两种
字节流:字节流可以操作任何数据,因为在计算机中任何数据都是以字节的形式存 储于电脑中的
字符流:字符流只能操作纯字符数据,比较方便。
IO流常用父类
字节流的抽象父类:
InputStream
OutputStream
字符流的抽象父类
Reader
Writer
IO程序书写
使用时:导入IO包中的类
使用时:进行IO异常处理
使用后,释放资源
一次性读出
int len=fis.available();
byte[] arr=new byte[len];
fis.read(arr);
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
/*
* read()方法读取的是一个字节,为什么返回的是int而不是byte
*因为以-1为结束标志
* */
public class demo1_FileInputStream {
public static void main(String[] arg) throws IOException{
FileInputStream fis=new FileInputStream("src//xxx.txt");//创建流对象参数是字节流的文件路径
// int x=fis.read(); //从硬盘上读取一个字节
// System.out.println(x);
// int y=fis.read(); //自动向后走一次 文件的结束标记是-1
// System.out.println(y);
int b;
while ((b=fis.read())!=-1){
System.out.println(b);
}
fis.close(); //关流释放资源
}
}
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
/*
* FileOutputStream在创建对象的时候如果没有这个对象,他就会自动帮我创建一个出来了。
* 第二次执行时是在原有的基础上修改,将源文件内容清空重写
* 如果想续写就可以在FileOutputStream fos=new FileOutputStream("src/yyy.txt",true)第二个参数传true
* */
public class demo2_FileOutputStream {
public static void main(String[] args) throws IOException {
FileOutputStream fos=new FileOutputStream("src/yyy.txt",true);//输出流从内存输出字节流
fos.write(97); //虽然写出的是一个int但是到文件中会自动去除前三个8位变成string
fos.write(98); //第二次执行时是在原有的基础上修改,将源文件内容清空重写
fos.close();
}
}