java.io.DataInputStream.readChar() 方法读取两个字节,并返回一个字符值。
以下是java.io.DataInputStream.readChar()方法的声明:
public final char readChar()
此方法返回读取的char值。
下面的示例演示java.io.DataInputStream.readChar()方法的用法。
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();
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();
}
}
}
in.read()方法的确是读取一个字节,但是,它返回的是int类型,不是char类型,所以,在这里你就需要转换为char了。那么,字符2的ascii码是多少?对了,是50,所以你输出就是50了。如果你要输出为2,这就简单了,(char)in.read() 把它转换成char型不就得了吗?
OK!如还有问题,继续
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();
}
这样就能输出读取的全部内容
你可以看下三楼的答案
你应该记错了 in.read()是读取第一个字节 不信你试试 不论你后面有多少,是多少,都只会读取第一个字节