Java学习笔记 IO流

流按操作类型分为两种: 字节流与字符流。字节流可以操作任何数据,字符流只能操作纯字符数据,比较方便;
字节流: 基本操作与字符流相同, 字节流可以操作任意类型数据;
  1. 字节流和字符流的区别:
    <1>字节流用来读取字节数据;
    <2>字符流用来读取字符数据;
    <3>由于计算机中存储和传输数据是以字节的形式,所以字节流可以操作任意类型数据;
    <4>在所有字节都对应字符的时候,使用字符流操作更方便;

代码示例

File inFile = new File("F:\\A\\1.mp3");
        File outFile = new File("E:\\ABC.mp3");
        //建立数据通道
        FileInputStream fileInputStream = new FileInputStream(inFile);
        FileOutputStream fileOutputStream = new FileOutputStream(outFile);
        //建立缓冲字节数组,边读边写
        byte[] buf = new byte[1024];
        int length = 0 ; //用于记录每次读取的字节个数
        while((length=fileInputStream.read(buf))!=-1){ 
            fileOutputStream.write(buf,0,length);
        }
        //关闭资源
        fileOutputStream.close();
        fileInputStream.close();

字节流与字符流的区别

字节流和字符流使用是非常相似的,那么除了操作代码的不同之外,还有哪些不同呢?
字节流在操作的时候本身是不会用到缓冲区(内存)的,是与文件本身直接操作的,而字符流在操作的时候是使用到缓冲区的
字节流在操作文件时,即使不关闭资源(close方法),文件也能输出,但是如果字符流不使用close方法的话,则不会输出任何内容,说明字符流用的是缓冲区,并且可以使用flush方法强制进行刷新缓冲区,这时才能在不close的情况下输出内容

字符输入流:Reader

Reader是使用字符的方式从文件中取出数据,Reader类的定义如下:
public abstract class Reader extends Objects implements Readable,Closeable
Reader本身也是抽象类,如果现在要从文件中读取内容,则可以直接使用FileReader子类。
FileReader的构造方法定义如下:
public FileReader(File file)throws FileNotFoundException
以字符数组的形式读取出数据:


    public class Test {
     public static void main(String[] args) throws IOException {
          File f = new File("d:\\test.txt");
          Reader in=new FileReader(f);
         char[] c=new char[1024];
         int len=input.read(c);
         input.close();
         System.out.println(new String(c,0,len));
     }
 }

字符输出流:Writer

 public class Test16 {
      public static void main(String[] args) throws IOException {
          File f = new File("d:\\test.txt");
          Writer out=new FileWriter(f);
         String str="Hello World";
         out.write(str);
         out.close();
     }
 }

字节输入流:InputStream

public class Test12 {
     public static void main(String[] args) throws IOException {
         File f = new File("d:\\test.txt");
         InputStream in=new FileInputStream(f);
         byte[] b=new byte[1024];
         int len=in.read(b);
         in.close();
        System.out.println(new String(b,0,len));
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值