Android에서 SD 카드의 텍스트 파일을 어떻게 읽을 수 있습니까?
저는 Android 개발이 처음입니다.
SD 카드에서 텍스트 파일을 읽고 해당 텍스트 파일을 표시해야합니다. Android에서 직접 텍스트 파일을 볼 수있는 방법이 있습니까? 아니면 텍스트 파일의 내용을 읽고 표시 할 수있는 방법이 있습니까?
레이아웃 에서 텍스트를 표시하려면 무언가가 필요합니다. A TextView는 분명한 선택입니다. 따라서 다음과 같은 것이 있습니다.
<TextView
android:id="@+id/text_view"
android:layout_width="fill_parent"
android:layout_height="fill_parent"/>
코드는 다음과 같습니다.
//Find the directory for the SD Card using the API
//*Don't* hardcode "/sdcard"
File sdcard = Environment.getExternalStorageDirectory();
//Get the text file
File file = new File(sdcard,"file.txt");
//Read text from file
StringBuilder text = new StringBuilder();
try {
BufferedReader br = new BufferedReader(new FileReader(file));
String line;
while ((line = br.readLine()) != null) {
text.append(line);
text.append('\n');
}
br.close();
}
catch (IOException e) {
//You'll need to add proper error handling here
}
//Find the view by its id
TextView tv = (TextView)findViewById(R.id.text_view);
//Set the text
tv.setText(text);
이것은 onCreate()당신 의 방법 Activity이나 당신이 원하는 것에 따라 다른 곳으로 갈 수 있습니다.
에 대한 응답으로
/ sdcard /를 하드 코딩하지 마십시오.
때때로 우리는 해야 할 API를 방법은 휴대 전화 내부 메모리를 반환 일부 휴대폰 모델로 하드 코드.
알려진 유형 : HTC One X 및 Samsung S3.
Environment.getExternalStorageDirectory (). getAbsolutePath ()는 다른 경로를 제공합니다-Android
sdcard를 읽으려면 READ_EXTERNAL_STORAGE 권한이 있어야합니다. manifest.xml에 권한 추가
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
Android 6.0 이상에서 앱은 런타임에 위험한 권한을 부여하도록 사용자에게 요청해야합니다. 이 링크를 참조하십시오 권한 개요
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, 0);
}
}
package com.example.readfilefromexternalresource;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import android.app.Activity;
import android.app.ActionBar;
import android.app.Fragment;
import android.os.Bundle;
import android.os.Environment;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import android.widget.Toast;
import android.os.Build;
public class MainActivity extends Activity {
private TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
textView = (TextView)findViewById(R.id.textView);
String state = Environment.getExternalStorageState();
if (!(state.equals(Environment.MEDIA_MOUNTED))) {
Toast.makeText(this, "There is no any sd card", Toast.LENGTH_LONG).show();
} else {
BufferedReader reader = null;
try {
Toast.makeText(this, "Sd card available", Toast.LENGTH_LONG).show();
File file = Environment.getExternalStorageDirectory();
File textFile = new File(file.getAbsolutePath()+File.separator + "chapter.xml");
reader = new BufferedReader(new FileReader(textFile));
StringBuilder textBuilder = new StringBuilder();
String line;
while((line = reader.readLine()) != null) {
textBuilder.append(line);
textBuilder.append("\n");
}
textView.setText(textBuilder);
} catch (FileNotFoundException e) {
// TODO: handle exception
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
finally{
if(reader != null){
try {
reader.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}
}
BufferedReader br = null;
try {
String fpath = Environment.getExternalStorageDirectory() + <your file name>;
try {
br = new BufferedReader(new FileReader(fpath));
} catch (FileNotFoundException e1) {
e1.printStackTrace();
}
String line = "";
while ((line = br.readLine()) != null) {
//Do something here
}
주의 : 일부 휴대 전화에는 2 개의 sdcard, 내부 고정 카드 및 이동식 카드가 있습니다. 표준 앱을 통해 마지막 이름을 찾을 수 있습니다. "Mijn Bestanden"(영어 : "MyFiles"?)이 앱을 열면 (항목 : 모든 파일) 열린 폴더의 경로는 "/ sdcard", 아래로 스크롤하면 "external-sd"항목이 있으며이 항목을 클릭하면 "/ sdcard / external_sd /"폴더가 열립니다. 텍스트 파일 "MyBooks.txt"를 열고 싶다고 가정 해 보겠습니다.
String Filename = "/mnt/sdcard/external_sd/MyBooks.txt" ;
File file = new File(fname);...etc...
참고URL : https://stackoverflow.com/questions/2902689/how-can-i-read-a-text-file-from-the-sd-card-in-android
'program story' 카테고리의 다른 글
| org.openqa.selenium.WebDriverException : 알 수없는 오류 : 호출 함수 결과 '값'누락 (0) | 2020.11.27 |
|---|---|
| DropDownList 컨트롤에 RequiredFieldValidator를 추가하는 방법은 무엇입니까? (0) | 2020.11.27 |
| 먼저 EF 코드가있는 고유 키 (0) | 2020.11.27 |
| 폴링없이 파일 변경 감지 (0) | 2020.11.27 |
| Html.EnumDropdownListFor : 기본 텍스트 표시 (0) | 2020.11.26 |