【问题标题】:java.lang.NullPointerException when writing byte array写入字节数组时出现 java.lang.NullPointerException
【发布时间】:2011-06-09 00:13:20
【问题描述】:

我正在 java 中尝试这段代码:

  try
  {
    String url = "http://url.com/file.ext";
    InputStream myInputStream = getClass().getResourceAsStream(url);
    ByteArrayOutputStream myByteArrayOutputStream = new ByteArrayOutputStream();
    byte[] arrayOfByte = new byte[1024];
    int i;
    while ((i = myInputStream.read(arrayOfByte)) != -1)
    {
      myByteArrayOutputStream.write(arrayOfByte, 0, i);
    }
  }
  catch (Exception e)
  {
      System.err.println(e);
      System.err.println(e.getMessage());
      System.err.println(e.getLocalizedMessage());
      System.err.println(e.getCause());
      System.err.println(Arrays.toString(e.getStackTrace()));
      e.printStackTrace();

  }

编译正常但抛出异常,这是控制台输出:

java.lang.NullPointerException
null
null
null
[myclass.init(myclass.java:32), sun.applet.AppletPanel.run(Unknown Source), java.lang.Thread.run(Unknown Source)]
java.lang.NullPointerException
    at myclass.init(myclass.java:32) <- Line 32 is "while ((i = myInputStream....."
    at sun.applet.AppletPanel.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)

什么可能导致异常?

【问题讨论】:

    标签: java arrays exception byte bytearray


    【解决方案1】:

    其实再看一遍,你的InputStream myInputStream = getClass().getResourceAsStream(url); 没有意义,改用

    Url url = new Url("http://url.com/file.ext");
    UrlConnection urlCon = url.openConnection();
    InputStream input = urlCon.getInputStream();
    

    应该正确抓取字节

    【讨论】:

    • +1 - 如果该 URL 确实正确,这是正确的。如果那是错误的,你仍然不会得到这些字节。我建议在使用之前检查 InputStream。
    【解决方案2】:

    InputStream 显然为空。它是唯一在该行被取消引用的对象。

    getResourceAsStream() 使用类加载器在 CLASSPATH 中搜索命名资源。您提供的 URL 保证不在您的 CLASSPATH 中,所以这里没有什么神秘之处。

    【讨论】:

      猜你喜欢
      • 2018-05-20
      • 2016-06-19
      • 1970-01-01
      • 2016-01-24
      • 2021-08-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-10
      相关资源
      最近更新 更多