2017-05-24 39 views
-2

javaを使用してファイルを保存/作成する際に問題が発生しました。java.io.IOException:そのようなファイルまたはディレクトリがありません

java.io.IOException: No such file or directory 
at java.io.UnixFileSystem.createFileExclusively(Native Method) ~[na:1.7.0_79] 

私の環境はLinuxを使用していますが、Windows上でマウントしています(ファイルを保存しようとする場所)。 ファイル名が中国語のときに作成しようとするたびにヒットします。

これは、LinuxとWindowsの違いによってエンコードされるために起こりますか?

私は、同じようなOS(Linuxのアプリケーションを実行し、Linuxに保存し、Windowsの場合と同じこと)で実行して保存しようとしたとき、スムーズに動作します。

ご協力いただきありがとうございます。

私は、ファイルを作成するために

 File imgPath = new File(fullpath.toString()); 

     if (!imgPath.exists()){     
      FileUtils.forceMkdir(imgPath); 
      imgPath.setWritable(true, false); 
     } 

     fullpath.append(File.separator).append(fileName); 

     outputStream = new FileOutputStream(new File(fullpath.toString())); 

おかげで多くを使用するコード。

+1

これは誤字ではなく、クロスプラットフォームの問題です。私は上で述べた。私はWindows上でそれを保存しようとしている間、Linux上で自分のアプリケーションを実行しているマウント。パス、許可を確認してください。ファイル名に中国語の文字がないときはうまく動作します。 –

+0

コメントしなくても、私の質問をどんな男が落としているのか分かりません。あなたは私の質問を理解していないか、それに答えることができないと確信していません。 –

答えて

1

注:私はかなり新しいユーザーであり、まだ直接コメントすることはできません(これまでの質問と回答のみ)。これを回答として投稿しています。

WindowsはUTF-16を使用し、LinuxはUTF-8を使用します。 (まだ何かを変更するために余分なものをインストールしていないことを考慮して)UTF-8とUTF-16は同じ範囲の文字をサポートしています。しかし、私は正しく覚えている、それはメモリ(UTF-8は8ビットで始まり、UTF-16は16で始まる?)と関係がある。それにかかわらず、彼らは少し異なって記憶され/読まれている。次に、InputStreamReaderは、文字を、指定されたエンコーディングの外部表現から内部表現に変換します。バイトで行われた正確な方法については、このstackoverflow投稿(Difference between UTF-8 and UTF-16?)に記載されています。基本的には同じですが、漢字のように他のものとは異なります。その行に沿って解決策を探すことを提案するだろう(私はクラスに着く必要がある!)。私は完全に間違っている可能性がありますが、これはおそらく良い出発地です。がんばろう。

+0

申し訳ありませんが応答が遅いです。 UTF-16であっても簡体字中国語と繁体字中国語があります。私は正常にファイルを保存するが、実際のファイル名は単純化されたバージョンを使用しているため、ファイル名はまったく異なります。 –

関連する問題