私はAndroid development。
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 /をハードコードしないでください
時々、HAVE TOをハードコードします。一部の電話モデルでは、APIメソッドが内部電話メモリを返します。
既知のタイプ:HTC One XおよびSamsung S3。
Environment.getExternalStorageDirectory()。getAbsolutePath()は異なるパスを提供します-Android
SDカードを読むための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);
}
}
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"?)このアプリ(item:all files)を開いたとき、開いているフォルダーのパスは "/ sdcard"です下にスクロールすると「external-sd」というエントリがあり、これをクリックするとフォルダ「/ sdcard/external_sd /」が開きます。テキストファイル「MyBooks.txt」を開きたい場合、次のように使用します。
String Filename = "/mnt/sdcard/external_sd/MyBooks.txt" ;
File file = new File(fname);...etc...
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();
}
}
}
}
}
}