java io线程_Java中的I/O 线程 网络

1.有什么理由必须要用字符流?

答:处理字符数据的语法更方便、自动化字符编码

2.插入哪些代码可以让下面的代码正确编译?

Console console = System.console();

String color = console.readLine("What is your favorite color? ");

console.____("Your favorite color is "+color);

答:控制台输出定义了两个方法,format()和printf()。另外,还可以使用writer()方法来获取控制台的PrintWriter对象。故答案有三个:printf、format、writer().println

4.高级流和低级流

ObjectOutputStream和ObjectInputStream执行低级流序列化和反序列化,属于低级流。

PrintStreamand PrintWriter格式文本分别作用于低级的OutputStream和writer,但它俩本身属于高级流。

FileWriter和FileInputStream直接在文件上操作,属于低级流。

OutputStream是一个抽象父类,既不是高级也不属于低级。

5.假如有一个InputStream,接下来的内容是XYZABC,下面代码中假如count为3,下面代码执行结果是?

public static String pullBytes(InputStream is, int count) throws IOException

{

is.mark(count);

final StringBuilder sb = new StringBuilder();

for(int i=0; i

sb.append((char)is.read());

is.reset();

is.skip(1);

sb.append((char)is.read());

return sb.toString();

}

解析:

并不是所有的java输入输出流支持mark()操作;因此,如果没有调用mark- Supported() ,其结果直到运行时都是未知的。如果流支持mark()操作,那么结果将是XYZY,因为reset()操作将流回到mark()被调用之前的位置,skip(1)就会被跳过。但如果流不支持mark()操作,可能会抛出一个运行时异常。

因此当不知道输入流是否支持mark()操作时,The result cannot be determined with the information given(结果不能够被确定)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值