我正在从Java学习java:Complete Reference。 我目前正在研究本章中的示例:输入/输出:探索java.io 我从下面的例子中了解了几行代码。 任何人都可以帮我这个例子。
import java.io.*;
class FileInputStreamDemo
{
public static void main(String args[]) throws IOException
{
InputStream f = new FileInputStream("E://SomeRandomTextFile.txt");
System.out.println("Total available bytes : " + size = f.available());
int n = size/40;
System.out.println("First" + n + " bytes of file one read() at a time");
for(int i=0; i<n; i++)
{
System.out.println((char) f.read());
}
System.out.println("\n Still available: "+ f.available());
System.out.println("Reading the text " + n + " with one read(b[])");
byte b[] = new byte[n];
if(f.read(b) != n)
{
System.err.println("coudn't read" + n + "bytes.");
}
System.out.println(new String(b,0,n));
}
在上面的代码中,我了解了最后五行代码。
的结果是什么?
f.read(b)
什么是
System.err
和
的结果是什么?
new String(b,0,n);
答案 0 :(得分:1)
应该是:
if(f.read(b) != n)
这是一个从文件中读取字节到缓冲区的方法调用。来自javadoc:
从输入流中读取一些字节并将其存储到 缓冲阵列b。
这一行:
new String(b,0,n);
从缓冲区String
内的字节创建一个新的b
,从索引0开始并接下来的n个字节。来自javadoc:
通过解码指定的字节子数组构造一个新的String 使用平台的默认字符集。
最后这个:
System.err
返回对程序标准错误流的引用。
答案 1 :(得分:1)
f.read(b)
会生成长度为1的整数或单个字节。
System.err
找到错误窗口,然后在那里放置一条消息,就像System.out
找到控制台窗口一样,然后在那里发送消息。
new String(b,0,n)
将使用String(byte [] bytes,int offset,int length)构造函数生成一个字符串数组b的字符串,从偏移量0开始,长度为n。