Java中输入/输出(I/O流)基础

本文深入讲解Java中的IO流概念及分类,包括输入流与输出流的区别,以及字节流和字符流的应用。通过实例演示如何使用FileOutputStream进行文件操作。

是在设备和设备之间的一种数据传输,像水流一样,必须有源端和目的端,数据有两种传输方向,实现数据从外部源到程序的流称为输入流,实现数据从程序到外部源的流称为输出流。

Java中流的分类有两种:

        按数据的传输方向分为:输入流和输出流 

                                            (输入流: 读取文件   (e:\\a.txt):从硬盘上文件读取出来后输出这个文件的内容  )

                                             (输出流: 写文件:将e:\\a.txt 内容读出来--->写到f盘下)

                                            (InputStream字节输入流)(OutputStream字节输出流)

                                           (Reader字符输入流)(Writer字符输出流)

        按数据传输的单位分为:字节流和字符流

  需求:在当项目下输出一个文件,fos.txt文件(文本文件)
   只要文本文件,优先采用字符流,字符流在字节流之后出现的
   使用字节流进行操作
   无法创建字节输出流对象:OutputSteam :抽象类,不能实例化
   又学习过File类,并且当前是对文件进行操作,子类:FileOutputSteam进行实例化
  
   File+InputStream
   File+OutputStream
   FileXXX  (FileReader)
   FileXXX  (FileWriter)
  
  开发步骤:
   1)创建字节输出流对象(//创建对象做了几件事情 1)构造了输出流对象 (系统创建对象)2)指向了当前项目下输出fos.txt 例句:FileOutputStream fos = new FileOutputStream("fos.txt") ; //FileNotFoundException)
   2)写数据(使用流对象给文件中写入数据fos.write("hello".getBytes());)

   3)关闭资源(将文件和流对象不建立关系了 (fos对象不指向fos.txt)并且及时释放掉流对象所占用的内存空间)

关于字节输出流写数据的方法

FileOutputStream fos = new FileOutputStream("fos2.txt") ;//构造一个字节数出流对象
(1) public void write(int b):一次写一个字节

                   例句:fos.write(97);//写数据一次一个字节
                          fos.write(127);

                  (2) public void write(byte[] b) :一次写一个字节数

                           例句:byte[] bys = {97,98,99,100,101} ;

                                       fos.write(bys);

                (3) public void write(byte[] b, int off,int len):一次写一部分字节数组

                          例句:fos.write(bys, 0, 2);

 public FileOutputStream(File file, boolean append):指定为true,末尾追加数据
读数据方式:

1)public abstract int read():一次读取一个字节
  例句
//创建一个字节文件输入流对象                   
//方式1:一次读取一个字节
FileInputStream fis  = new FileInputStream("fis.txt") ;
                //FileInputStream fis  = new FileInputStream("FileOutputStreamDemo.java") ;


     int by = fis.read() ;   //开始读取:第一次读取
System.out.println(by);
System.out.println((char)by);
               

  2)public int read(byte[] b):一次读取一个字节数组 (读取实际的字节数)

              例句:   int by = 0 ;

           while((by=fis.read())!=-1) {
    System.out.print((char)by);}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值