InputStream

什么是流(Stream),流就是一系列的数据


当不同的介质之间有数据交互的时候,JAVA就使用流来实现。 
数据源可以是文件,还可以是数据库,网络甚至是其他的程序 


比如读取文件的数据到程序中,站在程序的角度来看,就叫做输入流 
输入流: InputStream 
输出流:OutputStream
什么流



如下代码,就建立了一个文件输入流,这个流可以用来把数据从硬盘的文件,读取到JVM(内存)。

目前代码只是建立了流,还没有开始读取,真正的读取在下个章节讲解。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
package  stream;
 
import  java.io.File;
import  java.io.FileInputStream;
import  java.io.IOException;
 
public  class  TestStream {
 
     public  static  void  main(String[] args) {
         try  {
             File f =  new  File( "d:/lol.txt" );
             // 创建基于文件的输入流
             FileInputStream fis =  new  FileInputStream(f);
             // 通过这个输入流,就可以把数据从硬盘,读取到Java的虚拟中来,也就是读取到内存中
 
         catch  (IOException e) {
             // TODO Auto-generated catch block
             e.printStackTrace();
         }
 
     }
}



InputStream字节输入流 
OutputStream字节输出流 
用于以字节的形式读取和写入数据



所有的数据存放在计算机中都是以数字的形式存放的。 所以字母就需要转换为数字才能够存放
比如A就对应的数字65,a对应的数字97. 不同的字母和符号对应不同的数字,就是一张码表。
ASCII是这样的一种码表。 字包含简单的英文字母,符号,数字等等。 不包含中文,德文,俄语等复杂的。

示例中列出了可见的ASCII码以及对应的十进制和十六进制数字,不可见的暂未列出



InputStream是字节输入流,同时也是抽象类,只提供方法声明,不提供方法的具体实现。
FileInputStream 是InputStream子类,以FileInputStream 为例进行文件读取
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
package  stream;
  
import  java.io.File;
import  java.io.FileInputStream;
import  java.io.IOException;
  
public  class  TestStream {
  
     public  static  void  main(String[] args) {
         try  {
             //准备文件lol.txt其中的内容是AB,对应的ASCII分别是65 66
             File f = new  File( "d:/lol.txt" );
             //创建基于文件的输入流
             FileInputStream fis = new  FileInputStream(f);
             //创建字节数组,其长度就是文件的长度
             byte [] all = new  byte [( int ) f.length()];
             //以字节流的形式读取文件所有内容
             fis.read(all);
             for  ( byte  b : all) {
                 //打印出来是65 66
                 System.out.println(b);
             }
             
             //每次使用完流,都应该进行关闭
             fis.close();
              
         catch  (IOException e) {
             // TODO Auto-generated catch block
             e.printStackTrace();
         }
          
     }
}

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值