java IO 里面的 read() 方法

2024-12-04 13:16:02
推荐回答(5个)
回答1:

  1. java.io.DataInputStream.readChar() 方法读取两个字节,并返回一个字符值。

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

    public final char readChar()

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

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


  5. 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();
          }
       }
    }

回答2:

in.read()方法的确是读取一个字节,但是,它返回的是int类型,不是char类型,所以,在这里你就需要转换为char了。那么,字符2的ascii码是多少?对了,是50,所以你输出就是50了。如果你要输出为2,这就简单了,(char)in.read() 把它转换成char型不就得了吗?
OK!如还有问题,继续

回答3:

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();
}
这样就能输出读取的全部内容

回答4:

你可以看下三楼的答案

回答5:

你应该记错了 in.read()是读取第一个字节 不信你试试 不论你后面有多少,是多少,都只会读取第一个字节