java中的read(byte【】)方法的问题

问题描述

java中的read(byte【】)方法的问题
为什么is=system.in就会成为死循环,而上面用file程序就会停止

解决方案

你用System.in时因为在while要检查输入的内容长度,因此会进入阻塞状态。不能说是死循环,循环的话会输出内容的,这里是阻塞了。

你输入了一次,会输出至少一次,根据你输入的内容长度来定,输出完毕后,会再次进入while判断条件中判断是否有新的输入,也就是说用System.in是没有办法达到一个普通文件那样的输入结尾的,只要你程序开着,他就可以一直输入。在read方法中它其实调用了read(byte b[] int off int len)方法,该方法的注释中明确了会进入阻塞状态的条件,这里的len是你的byte数组长度为8,不为0.见下面加黑部分:

Reads up to len bytes of data from this input stream into an array of bytes. **If len is not zero the method blocks until some input is available**; otherwise no bytes are read and 0 is returned.

解决方案二:
system.in 是指从键盘输入的接收流,你没有输入,当然挂在那里,而不是什么死循环。

解决方案三:
目测是readnext

解决方案四:
应该是这样写:
File f = new File(“E:1.txt”);

InputStream in = new FileInputStream(f);

这样才能把文件 读进来

解决方案五:
system.in 是指从键盘输入的接收流,你没有输入,当然挂在那里,而不是什么死循环。

解决方案六:
Java NIO中SocketChannel read方法的返回值问题
JAVA中3种将byte转换为String的方法
java中把对象转化为byte数组的方法

时间: 2016-07-08
Tags: java

java中的read(byte【】)方法的问题的相关文章

java中String的一些方法深入解析

以下是对java中String的一些方法进行了详细的分析介绍,需要的朋友可以参考下   1.public String(char[] c,begin,length).从字符数组c的下标begin处开始,将长度为length的字符数组转换为字符串. begin与length可以省略,即将字符数组c转换为字符串.另:字符数组可改为字节数组byte[] b.char[] c=new char[]{'j','y','6','a','4','t','9'}; String s1=new String(c)

java中如何让setText方法读取指定标签数据的时候特意空出一点点空间

问题描述 java中如何让setText方法读取指定标签数据的时候特意空出一点点空间 如何让setText方法读取指定标签数据的时候特意空出一点点空间java当中 解决方案 http://zhidao.baidu.com/link?url=znfx-j9HEz7fJS4EcXcc-gX096uqEKQMTQo4vBNrc9bhRAlFHGGxkAP8cPTOkATWxy3DqxQwhBwFAscWkNPxe_,用空字符串占位置看看可不可以也就是字符串前面有空格,后面有空格. 解决方案二: 使用全

在Java中进行事务处理的方法

摘要 本文介绍在Java中进行事务处理的方法,通过实例分别讲述了如何采用JavaBean.Ejb组件实现J2EE应用服务器支持的JDBC事务.JTA(Java Transaction API)事务. 关键词 JavaBean,EJB, 数据库,事务处理,JTA JavaBean JavaBean是用Java语言编写的与平台无关的组件.它是描述Java的软件组件模型,有点类似于Microsoft的COM组件的概念.在Java模型中,通过JavaBean可以无限扩充Java程序的功能,通过JavaB

java中final 变量作为方法的参数?怎么理解?见下面代码

问题描述 java中final 变量作为方法的参数?怎么理解?见下面代码 class NiMingLei { public static void main(String[] args) { Outer out= new Outer(); out.function(7); out.function(8); } } class Outer { static int y=4; void function(final int a) { class Inter { void method() { Sys

java中一个类的方法与方法之间可以有联系,也可以相互孤立吗

问题描述 java中一个类的方法与方法之间可以有联系,也可以相互孤立吗 java中一个类的方法与方法之间可以有联系,也可以相互孤立吗什么情况要孤立,什么情况要有联系呢 解决方案 看需求.比如说class A{ float get长度() { ... } float get宽度() { ... } float get面积() { return get长度()*get宽度(); }}这里就需要调用另外两个方法 解决方案二: 现在还有人有这玩意嘛 解决方案三: 类的方法主要是对属性的一些操作,方法作用

java语法-java中如何在其他方法的方法体里面初始化一个非静态public方法

问题描述 java中如何在其他方法的方法体里面初始化一个非静态public方法 java中如何在其他方法的方法体里面初始化一个非静态public方法 如何判断一个方法是不是静态方法, 解决方案 方法里面弄方法,,那是匿名类用的,,除此之外一般没这么用

java中 的变量在方法间的传递权限问题

问题描述 java中 的变量在方法间的传递权限问题 我现在定义了方法1(),在该方法里用了scanner获取了一个整数a,对这个整数进行了相关操作,返回了一个字符串s,但是我现在定义了一个方法2(),该方法要接收方法1()返回的字符串s,该方法同时也要用到方法1()中scanner获取的那个整数a,进行操作后返回一个整数b(b用main()函数接收),那么问题就来了,方法1只能返回一个字符串s,那么方法2()怎么获取方法1()的那个用scanner接收到的整数呢?我的想法是将方法1()中的sca

java中的类的方法的调用的问题

问题描述 java中的类的方法的调用的问题 新人初学java,有些概念不是很懂,还望各位能帮帮忙,谢谢 在java中,我知道静态方法(变量)可以直接类名.调用,而不用再创建对象, 但是我在学习枚举时遇到这样一个问题: public enum WeekDay{ MON,TUE,WEB,THU,FIR,SAT } public class TestEnum{ public void static main(String [] ,args){ WeekDay today = WeekDay.SAT;

java中为什么在main方法里面写sleep方法报错

问题描述 java中为什么在main方法里面写sleep方法报错 java中为什么在main方法里面写sleep方法报错,能看到图片吗,图片里有详细代码 解决方案 import java.lang.Thread;有没有加上 解决方案二: 开发建议采用Eclipse开发工具,这样导包和异常处理就很方便了. 解决方案三: 开发建议采用Eclipse开发工具,这样导包和异常处理就很方便了. 解决方案四: java中main()方法是哪个类里面的方法?JAVA中sleep().wait().yield(

java中什么情况下方法的参数可以省略数据类型而直接写数据?

问题描述 java中什么情况下方法的参数可以省略数据类型而直接写数据? 比如put(int 3); 什么情况下可以写put(3); 这里的put方法也没有方法体,什么情况下可以省略方法体呢 解决方案 put(int 3),有这种方式吗 put(int n)这种形式是方法的定义,当你使用put方法时,就直接传具体的值就行了 public int put(int n) { return n*10; } int m = put(10) 解决方案二: 对于你这种问法我是不解的,全局变量定义之后,局部变量