2017-12-27 11 views
0

.csv 파일을 찾는 데 문제가 있습니다. 내 Android 장치를 내 컴퓨터에 연결하면 파일 탐색기에서 만들고 쓰는 중입니다. 내 응용 프로그램에서 만드는 외부 디렉토리의 파일을 찾을 수 없습니다.

나는 그렇게처럼 내 매니페스트에 WRITE_EXTERNAL_STORAGE이 : 이것은 쓰기 함수를 호출

public void exportDatabase() { 
    File folder = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS) 
      + "/Folder"); 
    boolean var = false; 
    if (!folder.exists()) { 
     Log.d(EXPORT_DATA_TAG, "Folder does not exist"); 
     var = folder.mkdir(); 
     Log.d(EXPORT_DATA_TAG, "mkdir() success? " + var); 
    } 

    CharSequence contentTitle = getString(R.string.app_name); 
    final ProgressDialog progDailog = ProgressDialog.show(
      this, contentTitle, "Exporting data...", 
      true); 
    final Handler handler = new Handler() { 
     @Override 
     public void handleMessage(Message msg) { 
     } 
    }; 
    final String filename = folder.toString() + "/" + "LeadCapture.csv"; 
    Log.d(EXPORT_DATA_TAG,"Writing data to file: " + filename); 
    new Thread() { 
     public void run() { 
      boolean success = writeData(filename); 
      if (success) { 
       handler.sendEmptyMessage(0); 
       Log.d(EXPORT_DATA_TAG,"Write successful to .csv"); 
      } else { 
       Log.d(EXPORT_DATA_TAG,"Failed to write to .csv"); 
      } 
      progDailog.dismiss(); 
     } 
    }.start(); 
} 

:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

내가 내 주요 활동에서이 기능을 사용하여 파일에 쓰고 있어요 내 데이터베이스 도우미 클래스 :

Logcat은 파일이 /storage/sdcard1/Download/Folder/LeadCapture.csv에 성공적으로 쓰여졌음을 나타내지 만 다운로드 폴더 또는 어디에서나 폴더 나 파일을 찾을 수 없습니다.

나는이이 경로 /storage/sdcard1/Folder/LeadCapture.csv 결과

File folder = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS)

File folder = new File(Environment.getExternalStorageDirectory())

에 변화 시도하지만, 난 여전히이 파일을 찾을 수 없습니다입니다. 나는이 문제에 대한 대부분의 다른 질문에서 파일 경로를 알지 못하거나 내부 메모리에 쓰지 못하는 문제가 있었기 때문에 혼란 스러웠다. 이론적으로, 비록 내 writeFunction()이 올바르지 않더라도 적어도 볼 수있는 빈 디렉토리를 생성해야합니다. 어떤 아이디어?

+1

https://stackoverflow.com/questions/32789157/how-to-write-files-to- 외장형 - 공공 - 스토리지 - in-the-so-are-are-visibl – CommonsWare

+0

읽기 권한을 부여 했습니까? – ABDevelopers

+0

'var = folder.mkdir()'. mkdirs()가 실패하면 계속해서는 안됩니다. 더 나은 :'if (! folder.mkdir()) {Toast (...); return;}'. 그러면 파일을 만들 수 없다는 불평을하지 않을 것입니다. 하지만 디렉토리. – greenapps

답변

0

다른 사람이 비틀 거리는 경우 : 파일이 장치에서 생성 될 때와 표시 될 때 사이에 지연이 있습니다. MediaScanner는 새 파일을 검색하여 표시해야하며 너무 자주 또는 장치가 다시 설정 될 때만 실행됩니다. 내가 파일을 작성 이루어졌다 나는이 즉시 매체 검색을 트리거 내 응용 프로그램에 다음을 추가 :

   String[] files = { filename }; 
       MediaScannerConnection.scanFile(getApplicationContext(), files, null, null);