2017-10-16 16 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로 구분되는 것을 볼 수 있습니다 : \ 사용자 \ 폴더 \ 데이터베이스 그러나 나는이 같은 두 개의 백 슬래시와 경로를 호우 싶다. 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"; 

를 사용할 수와 같은 문자열 리터럴에 슬래시를 이스케이프 할 필요가 당신이

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

으로 끝낼 것, 그래서 '당신이 REGULA 소요 replaceAll 방법을 사용했다 또한 경우 (매개 변수가 문자열 리터럴을 그대로)을 탈출해야 거라고 r 식을 매개 변수로 사용하면 이중 이스케이프가 필요합니다. 일단 정규식 엔진 번 문자와 문자열 :

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

그러나 반복하는, 귀하의 경우는 더블 슬래시가 필요하지 않습니다.

+0

감사합니다. 덕분에 많은 도움이되었습니다. –