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了? 展开
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了? 展开
展开全部
java.io.DataInputStream.readChar() 方法读取两个字节,并返回一个字符值。
以下是java.io.DataInputStream.readChar()方法的声明:
public final char readChar()
此方法返回读取的char值。
下面的示例演示java.io.DataInputStream.readChar()方法的用法。
- 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
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();
}
}
}
展开全部
in.read()方法的确是读取一个字节,但是,它返回的是int类型,不是char类型,所以,在这里你就需要转换为char了。那么,字符2的ascii码是多少?对了,是50,所以你输出就是50了。如果你要输出为2,这就简单了,(char)in.read() 把它转换成char型不就得了吗?
OK!如还有问题,继续
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();
}
这样就能输出读取的全部内容
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()是读取第一个字节 不信你试试 不论你后面有多少,是多少,都只会读取第一个字节
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询