java IO 里面的 read() 方法

importjava.io.*;publicclassTest1{publicstaticvoidmain(String[]args){try{FileInputStre... import java.io.*;
public class Test1 {
public static void main(String[] args) {
try {
FileInputStream in = new FileInputStream("f:/test/dat.java");
//BufferedInputStream buf= new BufferedInputStream(in);
System.out.println(in.read()); //这句话不懂
}
catch(FileNotFoundException y){System.out.print("出错1");}
catch (IOException e1){System.out.print("出错2");}
}
}

dat内容:234654646987fdsarefw我是到我1234654646987fdsarefw我是到我

运行结果是50
read() 这个方法是读取一个字节。in.read() 不是应该读取文件dat里面的第一个字节2吗?怎么变成50了?
展开
 我来答 举报
yugi111
2015-07-12 · TA获得超过8.1万个赞
知道大有可为答主
回答量:5.1万
采纳率:70%
帮助的人:1.3亿
展开全部
  1. java.io.DataInputStream.readChar() 方法读取两个字节,并返回一个字符值。

  2. 以下是java.io.DataInputStream.readChar()方法的声明:

    public final char readChar()

  3. 此方法返回读取的char值。

  4. 下面的示例演示java.io.DataInputStream.readChar()方法的用法。


  5. 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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    public class DataInputStreamDemo {
       public static void main(String[] args) throws IOException {
           
          InputStream is = null;
          DataInputStream dis = null;
          FileOutputStream fos = null;
          DataOutputStream dos = null;
          byte[] buf = {65,66,67,68,69,70};
           
          try{
             // create file output stream
             fos = new FileOutputStream("c:\\test.txt");
              
             // create data output stream
             dos = new DataOutputStream(fos);
              
             // for each byte in the buffer
             for (byte b:buf)
             {
                // write character to the dos
                dos.writeChar(b);
             }
              
             // force bytes to the underlying stream
             dos.flush();
              
             // create file input stream
             is = new FileInputStream("c:\\test.txt");
              
             // create new data input stream
             dis = new DataInputStream(is);
              
             // read till end of the stream
             while(dis.available()>0)
             {
                // read character
                char c = dis.readChar();
                 
                // print
                System.out.print(c);
             }
          }catch(Exception e){
              
             e.printStackTrace();
          }finally{
              
             // releases all system resources from the streams
             if(is!=null)
                is.close();
             if(dos!=null)
                is.close();
             if(dis!=null)
                dis.close();
             if(fos!=null)
                fos.close();
          }
       }
    }
Stale331x
2012-11-06 · TA获得超过1299个赞
知道小有建树答主
回答量:1276
采纳率:33%
帮助的人:840万
展开全部
in.read()方法的确是读取一个字节,但是,它返回的是int类型,不是char类型,所以,在这里你就需要转换为char了。那么,字符2的ascii码是多少?对了,是50,所以你输出就是50了。如果你要输出为2,这就简单了,(char)in.read() 把它转换成char型不就得了吗?
OK!如还有问题,继续
本回答被提问者采纳
23 已赞过 已踩过<
你对这个回答的评价是?
评论(1) 举报 收起
网友TrustMe
2012-11-06
知道答主
回答量:53
采纳率:0%
帮助的人:25.7万
展开全部
read()方法读取的是字节的个数,它返回的是一个int类型数据,是读取到的字节的个数,当in.read()方法返回的是-1时,证明读完了,例如:
byte tom[ ] =new byte[10];
try{
FileInputStream in = new FileInputStream("f:/test/dat.java");
while((b=in.read(tom,0,18))!=-1){
String s=new String(tom,0,b);//得到数组tom中从0到b的字节,因为b是实际读取到的字节个数
System.out.println(s);
}
in.close();
}catch(IOException e){
e.printStackTrace();
}
这样就能输出读取的全部内容
3 已赞过 已踩过<
你对这个回答的评价是?
评论 举报 收起
zhuoqi0202
2012-11-06
知道答主
回答量:10
采纳率:0%
帮助的人:1.5万
展开全部
你可以看下三楼的答案
抢首赞 已赞过 已踩过<
你对这个回答的评价是?
评论 举报 收起
44...2@qq.com
2012-11-06
知道答主
回答量:19
采纳率:100%
帮助的人:8.2万
展开全部
你应该记错了 in.read()是读取第一个字节 不信你试试 不论你后面有多少,是多少,都只会读取第一个字节
抢首赞 已赞过 已踩过<
你对这个回答的评价是?
评论 举报 收起
收起 3条折叠回答
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式