Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/396.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 新文件读取器可能会出现问题_Java_Sonarqube_Sonarlint - Fatal编程技术网

Java 新文件读取器可能会出现问题

Java 新文件读取器可能会出现问题,java,sonarqube,sonarlint,Java,Sonarqube,Sonarlint,下面提到的代码片段使用以下squid规则给出Sonar注释: [SONAR]主要:删除构造函数“FileReader(String)”的这种用法。这是因为FileReader使用默认系统编码,这通常是不好的。你应该使用 try(BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(properties.get(FILE_BASED_CONFIGURATION).toString()

下面提到的代码片段使用以下squid规则给出Sonar注释:


[SONAR]主要:删除构造函数“FileReader(String)”的这种用法。

这是因为FileReader使用默认系统编码,这通常是不好的。你应该使用

try(BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(properties.get(FILE_BASED_CONFIGURATION).toString())), encoding)))
    {
         //some code
    }
 catch (IOException | ArrayIndexOutOfBoundsException e)
    {
        LOG.error("Exception while reading from File", e);
        //customerInfo.clear();
    }

这里的问题是您没有为文件指定编码,这意味着将使用系统的默认编码读取文件。这意味着代码的行为可能因系统而异

您应该明确说明文件的编码,例如

new InputStreamReader(
   new FileInputStream(
     properties.get(FILE_BASED_CONFIGURATION).toString()), "UTF-8")
这将使用
FileInputStream
(从文件中读取字节)读取文件,然后将其包装在
InputStreamReader
中,该读取器使用指定的编码将这些字节转换为字符

new InputStreamReader(
   new FileInputStream(
     properties.get(FILE_BASED_CONFIGURATION).toString()), "UTF-8")