Java 的I/O流
什么是流
1.流是一种对于文件的读与写的操作
- 流是有顺序的,流的数据是有顺序的
- 先进先出
- 流可以控制数据的流动的方向
流的分类
- 根据流动方向:输入流 输出流
- 根据单位: 字节流 字符流
- 根据功能; 节点流 高级流(处理流)
- 封装了一些类
- ***流的基类
-
输入流 输出流
- 字节流 InputStream OutputStream
- 字符流 Reader Writer
读取数据 写数据的
InputStream
此抽象类是表示字节输入流的所有类的超类 该流可以读取任意的文件:图片文件 视频文件 音频文件 .txt
public class IoTest {
public static void main(String[] args) throws IOException {
//文件的路径必须是存在改文件的,创建文件成功,代表流已经开始
InputStream inputStream= new FileInputStream("a.txt");
//读取
//show1();
byte[] buf=new byte[1024];
int len=0;
while((len=inputStream.read(buf))!=-1) {
//将数据读取到数组中,并且返回读取的个数,存储到len中,并且判断是否达到结尾
System.out.println(new String(buf,0,len)+"读取出来啦 ");
}
inputStream.close();
}
public static void show1() throws IOException {
InputStream inputStream= new FileInputStream("a.txt");
int data=0;
while((data=inputStream.read())!=-1) {
System.out.print((char)data+" ");
}
inputStream.close();
}
}
**OutputStream **
此抽象类是表示输出字节流的所有类的超类 用来将流中的数据写到文件中去,任意文件
public class IoTest1 {
public static void main(String[] args) throws IOException {
OutputStream outputStream=new FileOutputStream("c.txt");
outputStream.write(97);
outputStream.write(98);
byte[] bs="hello".getBytes();
outputStream.write(bs);
outputStream.close();
}
}
经典案例
如何将 将一个a.txt文件,剪切到d:\\test\\a.txt中
public class IoTest2 {
public static void main(String[] args) throws IOException {
File file=new File("a.txt");
InputStream reader=new FileInputStream(file);//写的方法可以直接在里面文件
OutputStream writer=new FileOutputStream("D:\\test2\\a.txt");
byte[] buf=new byte[1024];
int len=0;
while((len=reader.read())!=-1) {
writer.write(buf,0,len);
}
reader.close();
writer.close();
file.delete();
}
}