Откуда вы берете имя файла?Я попробовал следующий код, который копирует все файлы из одного каталога в другой и сохраняет китайские символы.
public class Main {
public static void main(String[] args) throws FileNotFoundException, IOException {
String sourceDirectory = "temp/d1";
String targetDirectory = "temp/d2";
for (File fIn : new File(sourceDirectory).listFiles()) {
File fOut = new File(targetDirectory, fIn.getName());
copy(fIn, fOut);
}
}
private static void copy(File fIn, File fOut) throws FileNotFoundException, IOException {
InputStream in = new BufferedInputStream(new FileInputStream(fIn));
OutputStream out = new BufferedOutputStream(new FileOutputStream(fOut));
try {
byte[] buf = new byte[1024];
int read;
while (-1 != (read = in.read(buf))) {
out.write(buf, 0, read);
}
} finally {
out.flush();
out.close();
in.close();
}
}
}
Возможно, вы обрабатываете имя файла таким образомкитайские иероглифы сброшены?