我正在尝试获取目录和子目录中的所有文件名。目录和文件的名称使用阿拉伯语。当我得到文件名时,它将返回????标记而不是名称。有人早些时候面对过这个问题吗?
boolean recursive = true;
Collection files = FileUtils.listFiles(root, null, recursive);
//System.out.println(files.toString());
PrintWriter success = new PrintWriter("E:\\success.txt", "UTF-8");
for (int i = 0; i < list.size(); i++) {
fileName = list.get(i);
for (Iterator iterator = files.iterator(); iterator.hasNext();) {
File file = (File) iterator.next();
if (file.getName().endsWith(fileName)) {
Files.copy(Paths.get(file.getAbsolutePath()),
Paths.get(targetDirectory + "\\" + file.getName()));
success.println(fileName.toString());
}
}
}
答案 0 :(得分:2)
您尝试过UTF-16编码格式吗?
PrintWriter success = new PrintWriter("E:\\success.txt", "UTF-16");
编辑: 我认为UTF-8应该能够正确编码阿拉伯字符。这里的问题可能是您用来读取文件的文本编辑器。请检查用于读取文件的文本编辑器的编码格式。在编辑器中将编码设置为Unicode UTF-8 应该可以解决您的问题。