public static void main(String[] args) throws IOException
{
Scanner in = new Scanner(System.in);
String fileName = in.nextLine();
Writer out = new BufferedWriter(new OutputStreamWriter(
new FileOutputStream("C:/temp/"+fileName+".txt"), "UTF-8"));//Ex thrown
out.close();
}
Çince karakterleri dosya adına işleyen bir yazar oluşturmaya çalışıyorum. Böylece örneğin 你好.txt
adlı bir dosya oluşturabilirim.Çince karakterleri bir dosya adına yazamazsınız
Ancak, yukarıdaki kodla birlikte bir FileNotFoundException
olsun, İngilizce karakterler için mükemmel bir şekilde çalışıyor ancak Çince karakterlerle çalışmıyor.
Yukarıdaki kodları üretmek için şu sorulara cevapları takip ettim: How to write a UTF-8 file with Java?, ancak bu kod çalışmıyor.
Bunu nasıl başarabilirim bilen var mı?
Yığın İzleme:
Path path = Paths.get("C:/temp/"+fileName+".txt");//throws ex
Charset charset = Charset.forName("UTF-8");
Path file = Files.createFile(path);
BufferedWriter bufferedWriter = Files.newBufferedWriter(file, charset);
bufferedWriter.close();
Stack: NIO kullanarak
Exception in thread "main" java.io.FileNotFoundException: C:\temp\??.txt (The filename, directory name, or volume label syntax is incorrect)
at java.io.FileOutputStream.open0(Native Method)
at java.io.FileOutputStream.open(Unknown Source)
at java.io.FileOutputStream.<init>(Unknown Source)
at java.io.FileOutputStream.<init>(Unknown Source)
Exception in thread "main" java.nio.file.InvalidPathException: Illegal char <?> at index 8: C:/temp/?.txt
at sun.nio.fs.WindowsPathParser.normalize(Unknown Source)
at sun.nio.fs.WindowsPathParser.parse(Unknown Source)
at sun.nio.fs.WindowsPathParser.parse(Unknown Source)
at sun.nio.fs.WindowsPath.parse(Unknown Source)
at sun.nio.fs.WindowsFileSystem.getPath(Unknown Source)
at java.nio.file.Paths.get(Unknown Source)
Bunun OS'ye bağlı olduğuna inanıyorum. İşletim sistemi, dosya adları olarak hangi dizeleri izin verilebileceğini denetler. Hangi işletim sistemini kullanıyorsunuz? Not; İşletim sistemi, baytların dosya verisinde ne olduğunu özellikle önemsemiyor; Bu dosyaları okuyan uygulamalara kalmış. Bu yüzden takip etmeye çalıştığınız bağlantı size yardımcı olmaz. – ajb
Lütfen stackTrace'i sağlayabilir misiniz? –
@TAsk İstiflenmiş yığın izi ve hangi satırın atıldığı belirtilir – Aequitas