[英]How can I read a text file from the SD card in Android?
我是Android開發的新手。
我需要從SD卡讀取文本文件並顯示該文本文件。 有什么方法可以直接在Android中查看文本文件,否則我如何讀取和顯示文本文件的內容?
在您的布局中,您將需要一些東西來顯示文本。 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);
這可以放在Activity
的onCreate()
方法中,也可以放在其他地方,這取決於您要執行的操作。
回應
不要硬編碼/ sdcard /
有時我們不得不硬編碼在某些型號的手機API方法返回內部手機內存。
已知類型:HTC One X和Samsung S3。
Environment.getExternalStorageDirectory()。getAbsolutePath()提供了不同的路徑-Android
您應該具有READ_EXTERNAL_STORAGE權限才能讀取sdcard。 在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個SD卡,一個內部固定卡和一個可移動卡。 您可以通過標准應用程序找到最后一個的名稱:“ 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...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.