A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

代码如下,我这调用它根本停不下来啊!!!
  1. public void dir (String serName){
  2.                
  3.                 System.out.println("以下是目录:");
  4.                 try {
  5.                        
  6.                         s = new Socket("10.12.39.27",8888);//连接服务器
  7.                         dis = new DataInputStream(new BufferedInputStream(s
  8.                                         .getInputStream()));//定义数据输入流

  9.                         int BUFSIZE = 8912;
  10.                         byte[] buf = new byte[BUFSIZE];
  11.                         System.out.println("chdn");
  12.                         while (true) {
  13.                                
  14.                                 int data = 0;//read用来保存从文件中读取过来的数据
  15.                                 if (dis != null) {
  16.                                         data= dis.read(buf);//遇到输入流的末尾,返回-1
  17.                                         String str = new String(buf);
  18.                                         System.out.println(str);
  19.                                 }//读两次才执行跳出
  20.                                 else if (data== -1) {
  21.                                         System.out.println("跳出");
  22.                                         break;
  23.                                 }
  24.                                 System.out.println("ssssssss");
  25.                         }
  26.                         System.out.println("zheng");
  27.                 } catch (IOException e) {
  28.                         System.out.println("错了");
  29.                 } finally {

  30.                         try {
  31.                                 dis.close();
  32.                         } catch (IOException e) {
  33.                                 e.printStackTrace();
  34.                         }

  35.                         try {
  36.                                 s.close();
  37.                         } catch (IOException e) {
  38.                                 e.printStackTrace();
  39.                         }
  40.                         System.out.println("asdf");
  41.                 }

  42.         }
  43.        
复制代码

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1 神马都是浮云

查看全部评分

2 个回复

倒序浏览
本帖最后由 忘川 于 2014-4-21 22:49 编辑
  1. boolean flag=true;//定义一个标志位控制
  2.                   while ( flag ) {
  3.                                 
  4.                                 int data = 0;
  5.                                 if (dis != null) {
  6.                                         data= dis.read(buf);
  7.                                         String str = new String(buf);
  8.                                         System.out.println(str);
  9.                                 }
  10.                                 else if (data== -1) {
  11.                                         System.out.println("跳出");
  12.                                          flag=false;
  13.                                 }
  14.                                 System.out.println("ssssssss");
  15.                         }
复制代码
  1.                         
复制代码
回复 使用道具 举报
我想你的问题可能就在这里。
  1. else if (data== -1) {
  2.                                         System.out.println("跳出");
  3.                                         break;
  4. }
复制代码


对于break关键字来说,你这样写在if语句中是没有作用, 我们都知道{} 这个双括号代表的是作用于,你把break放在System.out.println()后面,但是break还是在if语句块的作用域。

也就是说,你这段代码,使用与不使用break几乎没有区别,因为到右括号,作用于就结束了,对于while而言,brek自然也就没有作用了。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马