2010-03-22 3 views
2

파일을 작성해야하는 MIDlet을 작성하고 있습니다. 이 작업을 수행하기 위해 JSR-75의 FileConnection을 사용하고 있습니다.J2ME FileConnection의 파일 경로?

가능한 한 많은 장치에서이 MIDlet을 실행시키려는 의도입니다 (JSR-75를 지원하는 모든 MIDP 2.0 장치가 이상적으로 지원됩니다). FileConnection을 열려고하는, 노키아 S60 5 판 에뮬레이터에, 그러나

Enumeration drives = FileSystemRegistry.listRoots(); 
String root = (String) drives.nextElement(); 
String path = "file:///" + root; 

: 여러 에뮬레이터와 HTC 터치 PRO2에

, 나는 완벽하게 파일 시스템의 루트를 얻기 위해 다음과 같은 코드를 사용할 수 있습니다 이 경로에 java.lang.SecurityException이 발생합니다. 분명히 S60 장치는 파일 시스템의 루트에 연결을 허용하지 않습니다. System.getProperty ("fileconn.dir.photos")와 같은 것을 사용할 수 있다는 것을 알았지 만 모든 장치에서 지원되지는 않습니다.

내 실제 질문 : 최대 이식성을 고려하여 FileConnection을 만드는 경로를 얻는 가장 좋은 방법은 무엇입니까?

감사합니다.

편집 : 나는 내가 열거에 걸쳐 모든 뿌리를 반복하고, 쓰기 가능 하나 확인할 수 있습니다 가정,하지만 두 가지 이유에 대한 거의 최적입니다. 첫째, 반드시 쓰기 가능한 뿌리가있는 것은 아닙니다. 둘째, 전화 메모리 또는 메모리 카드 일 수 있으므로 저장 방법이 여러 장치에서 일관되지 않을 수 있습니다. 이는 다소 추한 것입니다.

답변

2

루트에 읽기 전용 연결을 열어 포함 된 폴더를 확인해야합니다.

일반적으로 폴더에 대한 read_write 연결을 열면 SecurityException이 발생하므로 읽기 전용 연결을 열어 쓰기 가능한 폴더를 찾으려면 하위 폴더를 찾아보십시오.

특히 Symbian (및 MIDlet에 보안 데이터 케이지를 제공하기에 충분한 다른 플랫폼)에서는 System.getProperty("fileconn.dir.private");을 사용하여 쓰기 가능한 영역을 찾을 수 있습니다.

+0

예, fileconn.dir.private에 대해 알았습니다. 그러나 그것이 발견되지 않으면, 나는 여전히 모든 뿌리를 시험해보기에 뒤 떨어진다. 그리고 R/W로 연결할 필요가 없습니까? 읽기 전용으로 연결하면 뿌리가 쓰기 가능한지를 알아낼 수 없습니다. – benvd

+1

뿌리는 쓸 수 없지만 하위 폴더 중 하나 일 가능성이 있습니다. –

0

우리가하는 일을 알려 드리겠습니다. 해당되는 경우 파일 시스템 루트와 SD 카드 루트를 찾는 테스트 응용 프로그램이 있습니다. 우리는 이것을 jad 매개 변수로 설정합니다. 이 코드는 Jad 파일에서이 코드를 읽습니다. 다른 장치에 대한 항아리를 재 컴파일 할 필요가 없으므로이 방법이 잘 작동합니다. 다른 파일 시스템 루트를 사용하는 핸드셋의 jad 매개 변수를 변경하십시오.

+0

그것은 훨씬 더 깨끗하지만, 우리의 경우에는 실제로 가능하지 않습니다. 우리의 응용 프로그램은 거의 모든 JSR-75 가능 장치에서 실행해야합니다. 어떤 장치가 어떤 루트에 쓰기 액세스를 허용하는지 확인할 수 없습니다. – benvd