Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何防止在Java中发现“Validation.EncodingRequired”_Java_Security - Fatal编程技术网

如何防止在Java中发现“Validation.EncodingRequired”

如何防止在Java中发现“Validation.EncodingRequired”,java,security,Java,Security,最近,我使用AppScan源扫描编码,它发现了一个我不知道如何修复并传递给扫描仪的发现,或者是一个假警报 这是我的密码 public static void copyFileUsingFileStreams(File source, File dest) throws IOException { InputStream input = null; OutputStream output = null; try { input = new

最近,我使用AppScan源扫描编码,它发现了一个我不知道如何修复并传递给扫描仪的发现,或者是一个假警报

这是我的密码

  public static void copyFileUsingFileStreams(File source, File dest)
    throws IOException
  {
    InputStream input = null;
    OutputStream output = null;
    try
    {
      input = new FileInputStream(source);
      output = new FileOutputStream(dest);
      byte[] buf = new byte[1024];
      int bytesRead;
      while ((bytesRead = input.read(buf)) > 0) {
        output.write(buf, 0, bytesRead); //Scanner reported that's a vulnerability in API OutputStream.write()
      }
    }
    finally
    {
      input.close();
      output.close();
    }
  }

我觉得不错。如果您正在写入字节,则不需要编码。如果你在写人物,那就不同了

也就是说,您确实应该将流包装在缓冲版本中:

output = new BufferedOutputStream(new FileOutputStream(dest));
同样地,对于输入也是如此。这不会影响与编码有关的任何内容,但会使文件I/O更加高效

您还应该更改finally块:


当您开始捕获并处理IOException时(这是您应该做的),如果在创建流时出现任何问题,您将面临NullPointerException的风险。

感谢chiastic解释这一问题:-
finally
{
    if (input!=null)
        input.close();
    if (output!=null)
        output.close();
}