2016-08-09 2 views
-1

Я проверяю свой код с forbiddenapis и он дает ошибку:Использование не по умолчанию кодировка для FileWriter

[forbiddenapis] Forbidden class/interface use: java.io.FileWriter [Uses default charset] 
[forbiddenapis] in org.a.b.FileObject (FileObject.java:45) 

, который указывает на первой линии:

FileWriter fw = new FileWriter(fileName); 
try { 
    BufferedWriter x = new BufferedWriter(fw); 
    try { 
    x.write(Integer.toString(value)); 
    } 
    finally { 
    x.close(); 
    } 
} 
finally { 
    fw.close(); 
} 

Как я могу это исправить?

+0

Как сказал @JoopEggen в [его ответ на свой предыдущий вопрос] (http://stackoverflow.com/a/38859744/3788176), «не делать используйте FileReader. Это старый класс утилиты для чтения файлов в кодировке платформы по умолчанию. Это не подходит для переносных файлов. Код не переносится. ". Вывод из этого, что 'FileWriter' испытывает те же проблемы. –

ответ

0

Вы не можете с FileWriter. Используйте FileOutputStream и OutputStreamWriter.

try(OutputStream fos = new FileOutputStream("File"); 
    Writer writer = new OutputStreamWriter(fos, "CHARSET")){ 
    // ... 

} 

Альтернативой будет:

try(Writer writer=Files.newBufferedWriter(Path, Charset.forName("charset"))){ 
    // ... 
} 
0

Read the Javadoc:

The constructors of this class assume that the default character encoding and the default byte-buffer size are acceptable. To specify these values yourself, construct an OutputStreamWriter on a FileOutputStream.

Смежные вопросы