私の基本的なコードは、パスに基づいてファイルの終了をチェックしようとしていますが、Unicode文字を処理できません。
Scanner scanner = new Scanner(System.in);
String input = scanner.nextLine();
File f = new File(input);
if (f.exists()) {
System.out.println("File is Found, According to java.io");
} else {
System.out.println(f.toString() + " is Not Existed, According to java.io ");
}
Path x = Paths.get(input);
if (Files.exists(x)) {
System.out.println("File is Found, According to java.nio");
} else {
System.out.println(x.toString() + " is Not Existed, According to java.nio");
}
入力(つまりファイルパス)がASCIIの場合、コードは正常に機能しますが、入力にUTF-8文字が含まれている場合、コードは両方で失敗します。
1 - 入力を正しく印刷します。
2 - ファイルが存在するかどうかを判断する(つまり、ファイルが存在する場合でも、コードはファイルが終了していないことを通知します)
例:
入力:
c://€.jpg
出力:
java.ioによると、c: .jpgは存在しません
java.nioによると、c: .jpgは存在しません。
私はNetBeans、Java 1.8、mavenを使用しています。
PS:私は使用しようとしました:
で実行します。
-Dfile.encoding = utf-8
プロジェクトプロパティにfollowignを追加します。
<project.build.sourceEncoding>utf-8</project.build.sourceEncoding>
しかし、何も起こらなかった。
助けてください。
回答:
回答№1は1正確には、ファイルエンコーディングではなく入力エンコーディングは必要ありません。したがって、文字コードを指定することができます。 Scanner
を使用して Scanner(InputStream source, String charsetName)
コンストラクタ:
Scanner scanner = new Scanner(System.in, "utf-8");