2017-10-16 13 views
1

私はディレクトリパスを検索するプログラムを作成しています。私はJFileChooserを使ってこれを行いました。これは素晴らしいことです。これがそのコードです。JFileChooserを使用して単一のバックスラッシュの二重バックスラッシュを追加する方法

JButton btnPathBrowser = new JButton("Select Database"); 
     btnPathBrowser.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent arg0) { 
       final JFileChooser fc = new JFileChooser(); 
       fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); 
       int response = fc.showOpenDialog(Create.this); 
       if (response == JFileChooser.APPROVE_OPTION); { 
        txtPath.setText(fc.getSelectedFile().toString()); 
        //fileName = fc.getSelectedFile().toString(); 

       } 


      } 
     }); 

これを実行すると、このように書かれたパスが取得されます。 GUI showing the Path

だから、パスが単一のバックスラッシュe.g.Cと分離されていることがわかります:\ユーザー\フォルダ\データベースが、私はそれがこのような2つのバックスラッシュでパスを相次ぐたいです。 C:\ Users \ Database。私はこれを試してみましたが、エラーを得た:

txtPath.setText(fc.getSelectedFile().toString().replace("\", "\\")); 

私はこのようにそれを使用したい:私は私のコードで正しい方向に任意のポインタが理解されるであろう、これにはかなり新しいです

String sourceFileName    = new String(txtPath.getSelectedText()); 

答えて

0

何も交換する必要はありません。あなたが唯一のその時でさえ、このような

String myPath = "C:\\foo\\bar"; 

として、文字列リテラルでスラッシュをエスケープする必要があり、あなたが本当にダブルスラッシュとスラッシュを置き換えるために必要な場合は、あなただけでは、プラットフォームに依存しないバージョン

String myPath = "C:/foo/bar"; 

を使用することができます「あなたがのレギュレーションを取るreplaceAll方法を使用していた場合は、さらに

String foo = bar.replace("\\", "\\\\"); // Convert one slash to two slashes 

で終わると思いますので、(パラメータは文字列リテラルとして)それらをエスケープする必要がありdはr式をパラメータとして使用する場合は、二重エスケープが必要です。一度正規表現エンジンのために一度リテラルと文字列のために:

String foo = bar.replaceAll("\\\\", "\\\\\\\\"); // Convert one slash to two slashes 

しかし、繰り返しに、あなたのケースでは、あなたはダブルスラッシュは必要ありません。

+0

ありがとう、これは私を助けてくれました! –

関連する問題