「android開発」SDカードのファイルを読み込みと書き込み方法

1.AndroidManifest.xmlに権限を追加
<!– SDカードのファイルを作成、削除権限 –>
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
<!– SDカードへデータの書き込み権限 –>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

2.Main.java
public class Main extends Activity {

private static final String FILE_NAME = “/myStrongFile.bin";

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
final EditText text1 = (EditText) findViewById(R.id.editText1);
final EditText text2 = (EditText) findViewById(R.id.editText2);
Button writeButton = (Button) findViewById(R.id.button1);
Button readButton = (Button) findViewById(R.id.button2);
String str = “";
// SDカードがあるかどうかを判断
str = Environment.getExternalStorageState().equals(
Environment.MEDIA_MOUNTED) ? “ありかつ読み書き可" : “無しまたは読み書き不可";
Toast.makeText(this, str, Toast.LENGTH_SHORT).show();
writeButton.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
write(text1.getText().toString());
text1.setText(“");
}
});

readButton.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
text2.setText(read());
}
});

}
private String read() {
StringBuilder sb = null;
if (Environment.getExternalStorageState().equals(
Environment.MEDIA_MOUNTED)) {
// SDカード格納ディレクトリを取得 /mnt/sdcard/
File sdCardDir = Environment.getExternalStorageDirectory();
// 指定されたファイルに対応する入力ストリーム
FileInputStream fis;
try {
fis = new FileInputStream(sdCardDir.getCanonicalPath()
+ FILE_NAME);
BufferedReader reader = new BufferedReader(
new InputStreamReader(fis));
sb = new StringBuilder(“");
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line);
}
reader.close();
return sb.toString();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

}
return null;

}

private void write(String str) {
if (Environment.getExternalStorageState().equals(
Environment.MEDIA_MOUNTED)) {
try {
// FileOutputStream(Environment.getExternalStorageDirectory().getCanonicalPath()+FILE_NAME);
// SDカードのディレクトリを取得
File sdCardDir = Environment.getExternalStorageDirectory();
File targetFile = new File(sdCardDir.getCanonicalPath()
+ FILE_NAME);
// 指定されたファイルにコンテンツを追加
RandomAccessFile raf = new RandomAccessFile(targetFile, “rw");
// ファイルポインタ
raf.seek(targetFile.length());
raf.write(str.getBytes());
raf.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
3.main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="${relativePackage}.${activityClass}" >

<EditText
android:id="@+id/editText1″
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginLeft="34dp"
android:layout_marginTop="20dp"
android:ems="10″ >

<requestFocus />
</EditText>

<EditText
android:id="@+id/editText2″
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/editText1″
android:layout_below="@+id/editText1″
android:layout_marginTop="42dp"
android:ems="10″
/>

<Button
android:id="@+id/button1″
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/editText2″
android:layout_below="@+id/editText2″
android:layout_marginTop="44dp"
android:text="書く" />

<Button
android:id="@+id/button2″
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/button1″
android:layout_alignBottom="@+id/button1″
android:layout_alignRight="@+id/editText1″
android:layout_marginRight="17dp"
android:text="読む" />

</RelativeLayout>

Android

Posted by arkgame