2009-12-21 4 views
0

MIME 형식을 가져올 코드가 있습니다. 작동하는 것 같습니다. if 문에 mimeType을 넣을 때 원하는 효과를 얻지 못합니다. 다음은 스 니펫입니다. MIME 타입이 텍스트 파일을 열 수 없습니다 text--mime 형식을 기반으로 파일을 열어야합니다.

if (file.isFile()) { 
try { 
    if (mimeType == "text/plain") openFile(file); 
} catch (IOException e) { 
    e.printStackTrace(); 
     System.err.print(" Cannot process file....\n"); 
} 
} 

경우

MimetypesFileTypeMap mimeTypesMap = new MimetypesFileTypeMap(); 
String mimeType = mimeTypesMap.getContentType(file); 

지금 난 단지 파일을 열고 자하는 유형 선택 - 마임를 가져옵니다. 왜 효과가 없을지에 대한 아이디어가 있습니까? openFile (file)은 작동하지만 문제는 아닙니다. file은 File Object입니다. 감사.

+2

안녕하세요. 당신이 말하는 언어/기술을 지적하는 태그를 추가 할 수 있습니다. –

+0

그는 자바를 사용하고 있습니다. – SLaks

+0

예, Java입니다. 그래서 상대 태그를 추가했습니다. – kiamlaluno

답변

0

아마도 mime 유형이 text일까요?

MIME 유형의 파일 검색 순서 :

MimetypesFileTypeMap로는 MIME 유형에 대한 사용자의 시스템 에서 여러 곳에서 보인다는 항목을 파일. MimetypesFileTypeMap로 인스턴스에

  1. 프로그래밍 방식으로 추가 된 항목 : 요청이 MIME을 위해 사용해 MimetypesFileTypeMap에서 유형을 검색하게되면, 그것은 검색은 다음과 같은 순서로 종류의 파일을 MIME.
  2. 사용자의 홈 디렉토리에있는 .mime.types 파일.
  3. 파일 /lib/mime.types.
  4. META-INF/mime.types라는 파일 또는 자원.
  5. META-INF/mimetypes.default라는 파일 또는 자원 (보통 은 activation.jar 파일에만 있음).

이 파일을 찾아서 .txt 파일에 지정된 MIME 유형을 찾으십시오. 출처 : link

+0

가능성이 낮습니다. 하나의'text'는 MIME 타입이 아닙니다. 또 다른 경우로, 대부분의 사용자는 해당 목록의 다섯 번째 항목이 J2EE 배포본에 포함 된 파일이며, 모든 MIME 유형 맵과 마찬가지로'text/plain'이 유형입니다 일반적으로 사용되는 텍스트 파일 접미사와 연관됩니다. – delfuego

+0

당신이주는 대답은 전혀 도움이되지 못합니다. mimeType 변수를 출력하고 클릭 한 모든 항목에 MIME 유형이 있습니다. (DefaultMutableTreeNode 객체와 마우스 리스너를 사용하여 트리를 만들었습니다 .JTree 코드가 작동 중입니다.) 인쇄되는 String은 text/plain입니다. 완전한 코드를 제공 할 수는 있지만 꽤 큽니다. 문제는이 메서드에만 있습니다. public void valueChanged (TreeSelectionEvent event) –

+0

JTree의 마우스 수신기입니다. JTree를 만들고 DefaultMutableTreeNode로 채 웁니다. 텍스트 파일을 클릭하면 TextArea에서 열려고합니다. 텍스트 파일 만 열어서 MIME 형식 검사를하고 싶습니다. MIME 형식이 제대로 반환되고, MIME 형식이 텍스트/일반 형식 인 경우 열리는 파일을 클릭 할 수 없습니다. 예, 파일이 아닌 디렉토리인지 확인합니다. 나는 지금 나의 딜레마를 더 분명하게 설명 했는가? 당신의 도움을 주셔서 감사합니다. –

1

String#equals()이 아닌 ==을 사용하는 MIME 유형을 비교하고 있습니다. 그렇습니까? 당신은 아마이 작업을 수행해야한다 :

if (mimeType.equals("text/plain")) openFile(file); 

더 나은 방법 :

if ("text/plain".equals(mimeType)) openFile(file); 

을 그 당신의 방식으로 점점에서 NPE을 방지하기 때문이다.

+0

와우. 얼마나 바보인가. 나는 그것을 알고 있었다. Perl과 JS에서 코딩을하고 있었는데 생각을 다시하지 않았습니다. 저를 정리해 주셔서 감사합니다. –

관련 문제