2017-07-16 9 views
0

は私がNetBeansでそれを実行すると、XMLは、それが動作し、文字が画像opening in netbeansPrintReaderは判読できない文字

に読める見ているが、私はその作品がdistのフォルダから実行するときにはときに私をファイル読み込みプログラムを構築し返しますそれは、これが開いたコードの一部

int option = chooser.showOpenDialog(this); 
    if(option == JFileChooser.APPROVE_OPTION){ 
     if(chooser.getSelectedFile()!=null){ 
      try { 
       reader = new FileReader(chooser.getSelectedFile()); 
       BufferedReader buff = new BufferedReader(reader); 
       text.read(buff, null); 
       opened = chooser.getSelectedFile(); 
       this.setTitle(chooser.getSelectedFile().getAbsolutePath()); 
      } catch (IOException ex) { 
       JOptionPane.showMessageDialog(null, "الملف غير موجود", "خطأ", JOptionPane.ERROR_MESSAGE); 
      }finally{ 
       if(reader!=null)try { 
        reader.close(); 
       } catch (IOException ex) { 

       } 
      } 
     } 
    } 

答えて

1

FileReaderのは、古いユーティリティクラス番目である画像 opening from dist folder

のように文字を表示するアラビア語を含むフォルダを開こうatはデフォルトのプラットフォームエンコーディングを使用します。これはコンピュータによって異なり、持ち運びできません。

Path path = chooser.getSelectedFile().toPath(); 
text.read(Files.newBufferedReader(path, StandardCharsets.UTF_8)); 
//text.read(Files.newBufferedReader(path, Charset.forName("Windows-1256")); 

アラビア語のテキストがUTF-8またはWindows-1256のいずれかとして格納されているとします。

+0

ありがとうございました。 –

+0

['FileReader'](http://docs.oracle.com/javase/8/docs/api/java/io/FileReader.html)は、' InputStreamReader'と'FileInputStream'です。 javadocもそう言います。新しい 'Path' APIの使用は良いですが、必要はありません。 javadocは次のように述べています。*このクラスのコンストラクタは、デフォルトの文字エンコーディングとデフォルトのバイトバッファサイズが適切であることを前提としています。これらの値を自分で指定するには、FileInputStreamにInputStreamReaderを構築します。*新しいInputStreamReader(新しいFileInputStream(chooser.getSelectedFile())、 "UTF-8")も有効です。 – Andreas

+0

@Andreas私が作りたかったのは、FileReaderがエンコーディングを指定できないということでした。ローカルファイル用です。便利なクラスFilesもよく知っている。 InputStreamReaderの利点は、バイナリ〜ストリームとテキストリーダー/ライターの間の橋渡しであるという明確な基本的性質です。ありがとう –

関連する問題