2013-05-17 4 views
0

파일을 열고 모든 파일 내용을 JTextArea에로드하는 프로그램을 작성하고 있습니다. 사용자가 다른 파일 형식을 열 수 없도록 제한하고 싶습니다. 동의하려는 형식은 다음과 같습니다. .js .php .html .asmx .htm .css 기본적으로 웹 브라우저에서 읽을 수있는 모든 형식입니다.파일 확장명을 정규식으로 검사합니다.

가장 좋은 방법은 무엇입니까?

정규식을 사용하여 파일 이름이 내 기준과 일치하는지 또는 더 간단한 해결 방법을 사용해야합니까?

String fileExtensions = "(.js|.php|.html|.asmx|.htm|.css)$"; // $ end of line regex 
JFileChooser fileChooser = new JFileChooser(); 
int returnValue = fileChooser.showOpenDialog(null); 

if (returnValue == JFileChooser.APPROVE_OPTION) { 
    File file = fileChooser.getSelectedFile(); 
    String fileName = file.toString(); 
    Pattern pattern = Pattern.compile(fileExtensions); 
    Matcher matcher = pattern.matcher(fileName); 
    if (matcher.find()) { 
     openAndReadFile(); // opens the file and outputs contents 
    } else { 
     // prompt the user to open a different file 
    } 
} else { 
    // do nothing because cancel was pressed 
} 

어떤 제안 : 여기

내가 생각했던 어떤 종류입니까?

답변

3

정규식을 사용해야합니까?

FileFilter filter = new FileNameExtensionFilter("JPEG file", "jpg", "jpeg"); 
JFileChooser fileChooser = ...; 
fileChooser.addChoosableFileFilter(filter); 
+0

아니, 난가 없습니다 :이 작업을 수행하는 가장 적절한 방법합니다 (FileNameExtensionFilter API에서)를 FileNameExtensionFilter

예 것이다. 이러한 확장 유형에 대한 파일 이름을 확인하는 가장 효율적인 방법을 찾고 있습니다. 확장 필터를 사용할 수 있는지 몰랐는데 사전에 감사해야 할 것입니다. –

+0

@ inner_class7 classic [XY 문제] (http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem) :). 어쨌든 올바른/선호하는 접근 방식입니다. – Pshemo

+0

한 번 더 빠른 질문이 있으십니까? 이 기능을 사용하면 다중 레벨 또는 다중 확장 필터를 만들 수 있습니까? 아니면 파일 이름을 확인하려고 할 때마다 여러 개의 필터를 만들어야합니까? –

관련 문제