C********a 发帖数: 10 | 1 想不明白BufferedReader.readLine()是怎么回事 如果是读文件的话,每叫一次
readLine()就读取文件的下一行,并且返回一个String;如果读到EOF就返回null。
比如
BufferedReader br = new BufferedReader("c:/test.txt");
while ((thisLine = br.readLine()) != null) {
System.out.println(thisLine);
}
那如果读的是一个inputstream呢 像下面
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String userName = null;
try {
userName = br.readLine();
} catch (IOException ioe) {
System.out.println("IO error trying to read your name!");
System.exit(1);
}
System.out.println("Thanks for the name, " + userName);
用户还没输入 br.readLine()会在那里等着吗?还是是别的过程?
另外像下面这个循环,会一直循环下去吗?请讲一讲过程 谢谢
while((message=reader.readLine())!=null){
System.out.println("read"+message);}
|
g*****g 发帖数: 34805 | 2 It's reading from a buffer, it will not block on waiting. |
b******y 发帖数: 9224 | 3 建议看jdk源码,能学不少东西。楼上说得对,内部实现了buffer缓存。其实和操作系
统的cache一个道理. |
C********a 发帖数: 10 | 4 谢谢! 但是如果不等待输入的话 这个循环是怎么工作的呢
while((message=reader.readLine())!=null){
System.out.println("read"+message);}
完整代码
public class ClientHandler implements Runnable{
BufferedReader reader;
Socket sock;
public ClientHandler(Socket clientSocket){
try{
sock=clientSocket;
InputStreamReader isReader=new InputStreamReader(sock.
getInputStream());
reader=new BufferedReader(isReader);
}catch(Exception ex){ex.printStackTrace();}
}
public void run(){
String message;
try{
while((message=reader.readLine())!=null){
System.out.println("read"+message);
tellEveryone(message);
}
}catch(Exception ex){ex.printStackTrace();}
}
}
【在 g*****g 的大作中提到】 : It's reading from a buffer, it will not block on waiting.
|
b***i 发帖数: 3043 | 5 是要等待的,你试验一下不就行了
【在 C********a 的大作中提到】 : 想不明白BufferedReader.readLine()是怎么回事 如果是读文件的话,每叫一次 : readLine()就读取文件的下一行,并且返回一个String;如果读到EOF就返回null。 : 比如 : BufferedReader br = new BufferedReader("c:/test.txt"); : while ((thisLine = br.readLine()) != null) { : System.out.println(thisLine); : } : 那如果读的是一个inputstream呢 像下面 : BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); : String userName = null;
|