2016-11-16 2 views
0

.txt 파일에 대해서만 파일 선택기를 만든 다음 해당 내용을 String으로 나타내는 코드를 작성하고 있습니다. 문제는 파일을 선택해도 아무 일도 일어나지 않는다는 것입니다 (로그는 결과 코드가 -1이고 요청 코드가 0 임). 누구든지 나를 도울 수 있습니까? 여기 android의 .txt 파일에서 문자열을 가져 오는 방법

public void onUploadClicked(View view) { 
    Intent intent = new Intent(); 
    intent.addCategory(Intent.CATEGORY_OPENABLE); 
    intent.setType("text/plain"); 
    intent.setAction(Intent.ACTION_GET_CONTENT); 
    startActivityForResult(Intent.createChooser(intent, getText(R.string.select_file)), REQUEST_CODE); 

} 

내 onActivityResult를 방법입니다 :

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 

    if (resultCode == Activity.RESULT_OK) { 
     if (data == null) { 
      return; 
     } else { 
      Uri uri = data.getData(); 
      uploadedFile = new File(uri.getPath()); 
      try { 
       readFile(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
     } 
    } else { 
     return; 
    } 
} 

그리고 여기에 독서에 대한 내 방법은 문자열에 .txt 파일입니다 :

private void readFile() throws IOException { 

    uploadedString = new StringBuilder(); 
    BufferedReader reader = new BufferedReader(new FileReader(uploadedFile)); 
    String line; 
    while ((line = reader.readLine()) != null) { 

     uploadedString.append(line); 
     uploadedString.append('\n'); 
    } 
    Log.i("Uploaded successfully: ", uploadedString.toString()); 
    reader.close(); 
} 
+0

'gettext에 (R.string.select_file)'를 무엇입니까? –

+0

문자열 리소스 (예 : '텍스트 파일 선택')에 대한 참조 – fregomene

+0

아, 그게'getText'가 아닌'getString'이라고 생각했는데 ... 그럼, 결과 코드를 어디에 기록하고 있니? (아마도 요청 코드도 확인해야합니다) –

답변

1

여기가 .txt 파일에 대한 내 선택기입니다 시도해보십시오

public static int PICK_FILE = 1; 

그런 다음 사용자 작성

private String readTextFile(Uri uri){ 
     BufferedReader reader = null; 
     StringBuilder builder = new StringBuilder(); 
     try { 
      reader = new BufferedReader(new InputStreamReader(getContentResolver().openInputStream(uri))); 
      String line = ""; 

      while ((line = reader.readLine()) != null) { 
       builder.append(line); 
      } 

     } catch (IOException e) { 
      e.printStackTrace(); 
     } finally { 
      if (reader != null){ 
       try { 
        reader.close(); 
       } catch (IOException e) { 
        e.printStackTrace(); 
       } 
      } 
     } 
     return builder.toString(); 
    } 

고른 텍스트 파일을 읽을 수 onActivityResult()

@Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     super.onActivityResult(requestCode, resultCode, data); 

     if (requestCode == PICK_FILE) { 
      if (resultCode == RESULT_OK) { 
       // User pick the file 
       Uri uri = data.getData(); 
       String fileContent = readTextFile(uri); 
       Toast.makeText(this, fileContent, Toast.LENGTH_LONG).show(); 
      } else { 
       Log.i(TAG, data.toString()); 
      } 
     } 
    } 

방법을 무시 암시 적 의도

Intent intent = new Intent(Intent.ACTION_GET_CONTENT); 
intent.setType("text/plain"); 
startActivityForResult(intent, PICK_FILE); 
+0

감사합니다! 그것은 작동합니다! – fregomene

+0

확인. . . 당신은 대답을 받아 들일 수 있습니다. –

관련 문제