我正在尝试使用 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条经验 获得超13个赞
检查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
提交
取消