我正在嘗試使用 URL 的批處理文件運行以下代碼,而 URL 不為空。它完全按照我想要的方式運行,但是,輸出的最后一行是:格式錯誤的 URL 異常:“null”不是有效輸入批處理程序成功完成我希望程序在實際讀取 null 之前立即停止。有什么建議么?(此外,我仍在學習如何提問而不讓人們生我的氣,所以如果我可以改進我的問題,請告訴我而不是投反對票。謝謝。)private static String getBatchUrlContents(String filePath) { logger.debug(">>getBatchUrlContents()"); String theUrl = ""; try { FileReader fileReader = new FileReader(filePath); BufferedReader bufferedUrlReader = new BufferedReader(fileReader); do { try { theUrl = bufferedUrlReader.readLine(); URL url = new URL(theUrl); HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); urlConnection.setRequestMethod("GET"); String contentType = urlConnection.getContentType(); logger.info("Content Type: {}", contentType); int statusCode = urlConnection.getResponseCode(); logger.info("Status Code: {}", statusCode); BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(urlConnection.getInputStream())); String line; List<String> contents = new ArrayList<String>(); while ((line = bufferedReader.readLine()) != null) { contents.add(line); } bufferedReader.close(); String[] contentArray = contents.toArray(new String[contents.size()]); System.out.println("\n ~~~~~~~NEW URL~~~~~~~ \n" + theUrl); for (String x :contentArray) System.out.println(x); String firstLine = contentArray[0]; if (firstLine.equals("#EXTM3U")) { logger.info("First line is validated: {}", firstLine); System.out.println("First line of content is validated: " + firstLine); }
1 回答

翻翻過去那場雪
TA貢獻2065條經驗 獲得超14個贊
檢查theUrl != null發生在循環結束時;它不是連續檢查的。
如果您需要theURL非 - null,則需要檢查一下。
您可以在條件下進行分配(盡管這在某些圈子中不受歡迎):
while((theUrl = bufferedUrlReader.readLine()) != null) {
URL url = new URL(theUrl);
...
或者,只需在循環內進行檢查并進行手動操作break:
while(true) {
theUrl = bufferedUrlReader.readLine();
if (!theURL) { // Or "if (theURL == null)"
break;
}
URL url = new URL(theUrl);
...
添加回答
舉報
0/150
提交
取消