为了账号安全,请及时绑定邮箱和手机立即绑定

Java "while != null" 读取最后一行为 null

Java "while != null" 读取最后一行为 null

森林海 2023-03-02 10:23:45
我正在尝试使用 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);

    ...


查看完整回答
反对 回复 2023-03-02
  • 1 回答
  • 0 关注
  • 94 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信