IO流

本文详细介绍了计算机中IO流的概念及其工作原理,并针对字节流和字符流进行了深入解析。文章通过实例展示了如何使用Java中的FileInputStream、FileOutputStream、FileReader、FileWriter等类进行文件读写操作。
摘要由CSDN通过智能技术生成
IO流作用:解决设备之间数据传输问题
1.内存到硬盘:写入  输出流
2.硬盘到内存:读取  输入流


按照输出流向:


输入流


输出流


按照处理的单位来进行划分:


字节流:读取的数据是文件中的二进制数据,不会对这个二进制进行任何的处理,直接以二进制流的方式传输


字符流:读取的数据是以字符为单位的,字符串也是读取到这些二进制数据,然后他会把这些二进制数据转化为我们熟悉的字符


字符流=字节流+解码


字节流
    输入流
         FileInputStream
         BufferedInputStream
    输出流
FileOutputStream
BufferedOutputStream
字符流
    输入流
FileReader
BufferedReader
    输出流
FileWriter
  BufferedWriter


输入流的用法步骤:
1.读取目标文件位置
2.建立数据传输通道
3.读取文件的数据
4.关闭资源


读数据:FileInputStream
int content=0;
while((content=inputStream.read())!=-1){
System.out.println((char)content);


}






1.read(byte[] buff)
2.int read(byte[] b, int off, int len) 


byte[] b=new byte[1024];
int length=0;
while((length=input.read(b))!=-1){


String str=new String(b,0,length);
System.out.println("读取数据的内容是:"+str);


}


写数据:FileOutputStream
注意点:
1.使用FileOutputStream 类 来写入数据到 磁盘的时候, 如果指定的 目标文件 不存在,那么会自己创建这个目标文件。


2.使用FileOutputStream 类 来写入数据到 磁盘的时候, 如果指定的 目标文件 存在,那么写入的时候会先清空文件中原本的数据,然后再写入数据(会覆盖掉原本的内容)


3..如果我们不想覆盖这个已经存在的文件中的内容,那么我们可以 用 FileOutputStream(File file, boolean append)  构造输出流对象


String data="今天太阳很大";
byte[] b=data.getByte();
outputStream.write(b,0,length);
//outputStream.write(b);


byte[] b=new byte[1024];
int length=0;
while((length=inputStream.read(b))!=-1){
for(int i=0;i<b.length;i++){
System.out.println(b[i]+" ");
}
}


BufferedOutputStream
注意点:
1.使用bufferdOutputStream 写数据的时候,它的 write方法 实际上是先把数据写到了它内部维护的 字节数组中, 没有马上写入到 磁盘中
2.当你调用 flush()方法, 就相当于通知它 把数据写到磁盘中去
3.当你调用close()方法,关闭资源的时候, 再也不会有数据写入了,也会立刻写数据到磁盘




String str="hello world";
byte[] b=new str.getByte();
bufferedOutputStream.write(str,0,length);


int content=0;
while((content=bufferedInput.read())!=-1){
bufferedOutput.write(content);
bufferedOutput.flush();
}


输入字符流
      Reader
FileReader


char[] cbuf=new char[1024];
int length=0;
while((length=fileReader.read(cbuf))!=-1){


String str=new String(cbuf,0,length);
System.out.println(str);
}
int content=0;
while((content=fileReader.read())!=-1){


System.out.println((char)content);
}


输出字符流
Writer
 FileWriter


char[] cbuf=new char[1024];
int length=0;
while((length=reader.read(cbuf))!=-1){
writer.writer(cbuf);
writer.flush();
}


bufferedWriter


它的内部还是为了一个  字符数组 作为缓冲区,同时扩展了一些功能
buffer.newLine();
buffer.writer("\r\n哈哈哈哈");
buffer.flush();
buffer.close();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值