2012-08-30 2 views
0

제목에서 알 수 있듯이 Android에서 폴더를 만들려고하지만 모든 슬래시가 제거되었습니다.

좀 더 배경 정보 :

는 특히, 내 응용 프로그램의 사용자의 파일을 저장할 디렉토리를 작성하려합니다. 이러한 파일은 전체 파일 관리를 지원하지 않기 때문에 파일 관리자 (예 : 파일 관리자 HD)에서 사용자가 액세스 할 수 있어야합니다. API 레벨 8+의 표준을 사용하여 공개적으로 액세스 할 수있는 폴더의 루트를 Environment.getExternalStoragePublicDirectory()으로 참조합니다. 그런 다음 DCIM> 스케치북> [스케치 이름]File.mkdirs()을 사용하여 폴더를 만듭니다. 자세한 내용은 아래 코드를 참조하십시오. File.mkdirs() 호출에서 슬래시가 제거되었습니다.


  • 가 SD 카드를 읽을 장착되어 있는지 확인하기 위해 검사 및 쓰기
  • WRITE_EXTERNAL_STORAGE
  • 모든 위해 File.mkdir()를 사용하여 시도 권한을 사용할 수 :

    나는 이미 계층 구조에서 폴더 위치까지 파일
  • 01을 사용해 보았습니다. 폴더 구분 기호로, \\, File.separatorCharFile.separator

코드 : 상기 시험의 여러 화신으로

boolean success = true; 

//The public directory 
File publicDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM); 
//The location of the sketchbook 
File sketchbookLoc = new File(publicDir + "Sketchbook" + File.separator); 
//The location of the sketch 
//getGlobalState().getSketchName() returns the name of the sketch: "sketch" 
File sketchLoc = new File(sketchbookLoc + getGlobalState().getSketchName() + File.separator); 

if(!sketchLoc.mkdirs()) success = false; 

//Notify the user of whether or not the sketch has been saved properly 
if(success) 
    ((TextView) findViewById(R.id.message)).setText(getResources().getText(R.string.sketch_saved)); 
else 
    ((TextView) findViewById(R.id.message)).setText(getResources().getText(R.string.sketch_save_failure)); 


(실제로 일을하는 사람) , 나는 일관된 결과를 얻었습니다. 이름이 계층 적 부모가되어야하는 모든 폴더의 조합에 해당하는 DCIM. 즉, 새로운 디렉토리를 만들었지 만 모든 폴더 분리 기호가 제거되었습니다.

지금, 나는 당신에게 물어

  • 나는 올바른 위치에 사용자 데이터를 저장하려고 있습니까? 이 일을해야한다는 또 다른 방법이 있습니까?
  • DCIM 폴더에 새 폴더를 만들 수 있습니까? Android가 그것을 방지합니까?
  • 이 문제는 저에게 특정한 것입니까? 다른 누구나 DCIM 폴더에 폴더를 만들 수 있습니까?
  • 오른쪽 폴더 구분 기호를 사용하고 있습니까?
  • 내가 완전히, 완전히, 그리고 완전히 빠져있는 뭔가가 있습니까?

이제 입력을 완료하고, 당신이 내 (과도하게 긴) 질문을 다 읽은 것을, 나는 대답은 어떤 종류의를 찾을 수 있기를 바랍니다. 설명이나 추가 정보가 필요하면 그렇게 말씀하십시오.

편집 : 생성 된 폴더의 예는 "DCIMSketchbooksketch"이며 "DCIM/Sketchbook/sketch"여야합니다.

답변

1

는 사용하지 않는

File sketchbookLoc = new File(publicDir + "Sketchbook" + File.separator); 

하지만

File sketchbookLoc = new File(publicDir , "Sketchbook"); 

때문에 publicDir.toString() 것이다 하지 (당신이 그런 식으로 선언 된 경우에도) 파일 ​​분리와 끝. toString()은 파일의 정규 이름을 제공합니다.


그래서 소스가된다 :

//The location of the sketchbook 
File sketchbookLoc = new File(publicDir , "Sketchbook"); 
//The location of the sketch 
File sketchLoc = new File(sketchbookLoc , getGlobalState().getSketchName()); 
+0

이 정확히 내가 찾던 트릭의 일종이었다 ... 감사합니다! – calsign

관련 문제