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

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);

                           例句: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):一次读取一个字节数组 (读取实际的字节数)


while((by=fis.read())!=-1) { 

     System.out.print((char)by);}