亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java中如何利用while循環語句處理關鍵環節

發布時間:2022-05-23 10:57:28 來源:億速云 閱讀:181 作者:zzz 欄目:大數據

這篇文章主要介紹“Java中如何利用while循環語句處理關鍵環節”,在日常操作中,相信很多人在Java中如何利用while循環語句處理關鍵環節問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Java中如何利用while循環語句處理關鍵環節”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

Java代碼

  1. public void handleConnection(Socket connectionToHandle) {   

  2. new Thread(new ConnectionHandler(connectionToHandle)).
    start();   

  3. }   

  4. public void handleConnection(Socket connectionToHandle) {  

  5. new Thread(new ConnectionHandler(connectionToHandle)).
    start();  

我們對 RemoteFileServer 所做的大改動就體現在這個方法上。我們仍然在服務器接受一個連接之后調用 handleConnection() ,但現在我們把該 Socket 傳遞給 ConnectionHandler 的一個實例,它是 Runnable 的。我們用 ConnectionHandler 創建一個新 Thread 并啟動它。ConnectionHandler 的 run() 方法包含Socket 讀/寫和讀 File 的代碼,這些代碼原來在 RemoteFileServer 的 handleConnection() 中。

4. 處理連接:第 2 部分

這里是 ConnectionHandler 類的結構:

Java代碼

import java.io.*;   import java.net.*;   public class ConnectionHandler implements Runnable{   Socket socketToHandle;   public ConnectionHandler(Socket aSocketToHandle) {   socketToHandle = aSocketToHandle;   }   public void run() {   }   }   import java.io.*;  import java.net.*;  public class ConnectionHandler implements Runnable{  Socket socketToHandle;  public ConnectionHandler(Socket aSocketToHandle) {  socketToHandle = aSocketToHandle;  }  public void run() {  }

這個助手類相當簡單。跟我們到目前為止的其它類一樣,我們導入 java.net 和 java.io 。該類只有一個實例變量 socketToHandle ,它保存由該實例處理的 Socket 。類的構造器用一個 Socket 實例作參數并將它賦給 socketToHandle 。

請注意該類實現了 Runnable 接口。實現這個接口的類都必須實現 run() 方法,我們的類就是這樣做的。稍后我們將探究 run() 的細節。現在只需知道它將實際處理連接,所用的代碼跟我們先前在 RemoteFileServer 類中看到的是一樣的。

實現 run()

這里我們實現 run() 方法,它將攫取我們的連接的流,用它來讀寫該連接,并在任務完成之后關閉它:

Java代碼

public void run() {   try {   PrintWriter streamWriter = new PrintWriter(socketToHandle.getOutputStream());   BufferedReader streamReader =   new BufferedReader(new InputStreamReader(socketToHandle.getInputStream()));   String fileToRead = streamReader.readLine();   BufferedReader fileReader = new BufferedReader(new FileReader(fileToRead));   String line = null;   while ((line = fileReader.readLine()) != null)   streamWriter.println(line);   fileReader.close();   streamWriter.close();   streamReader.close();   } catch (Exception e) {   System.out.println("Error handling a client: " + e);   }   }   public void run() {  try {  PrintWriter streamWriter = new PrintWriter(socketToHandle.getOutputStream());  BufferedReader streamReader =  new BufferedReader(new InputStreamReader(socketToHandle.getInputStream()));  String fileToRead = streamReader.readLine();  BufferedReader fileReader = new BufferedReader(new FileReader(fileToRead));  String line = null;  while ((line = fileReader.readLine()) != null)  streamWriter.println(line);  fileReader.close();  streamWriter.close();  streamReader.close();  } catch (Exception e) {  System.out.println("Error handling a client: " + e);  }  }

ConnectionHandler的 run() 方法所做的事情就是 RemoteFileServer 上的 handleConnection() 所做的事情。首先,我們把 InputStream 和 OutputStream 分別包裝(用 Socket 的 getOutputStream() 和 getInputStream() )進 BufferedReader 和 PrintWriter 。然后我們用這些代碼逐行地讀目標文件:

Java代碼

FileReader fileReader = new FileReader(new File(streamReader.readLine()));   BufferedReader bufferedFileReader = new BufferedReader(fileReader);   String line = null;   while ((line = bufferedFileReader.readLine()) != null) {   streamWriter.println(line);   }   FileReader fileReader = new FileReader(new File(streamReader.readLine()));  BufferedReader bufferedFileReader = new BufferedReader(fileReader);  String line = null;  while ((line = bufferedFileReader.readLine()) != null) {  streamWriter.println(line);  }

請記住我們應該從客戶機獲取一條有效的文件路徑,這樣用該路徑名構造一個新 File ,把它包裝進 FileReader 以處理讀文件的操作,然后把它包裝進 BufferedReader 以讓我們逐行地讀該文件。我們在 Java while循環語句中調用 BufferedReader 上的 readLine() 直到不再有要讀的行。請記注,對 readLine() 的調用將造成阻塞,直到有字節來到為止。我們獲取一些字節之后就把它們放到本地的 line 變量中,然后寫出到客戶機上。

到此,關于“Java中如何利用while循環語句處理關鍵環節”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

华蓥市| 武义县| 永仁县| 婺源县| 绥阳县| 鹿邑县| 镇平县| 山西省| 油尖旺区| 甘谷县| 青州市| 平泉县| 涟水县| 工布江达县| 宝丰县| 广宁县| 成安县| 巴彦县| 马鞍山市| 长武县| 沁源县| 嘉兴市| 宜阳县| 孟津县| 渝中区| 宁晋县| 阳曲县| 南木林县| 如皋市| 康平县| 称多县| 华阴市| 邵阳县| 明溪县| 育儿| 翼城县| 吴江市| 玉树县| 增城市| 吴堡县| 本溪市|