AS初級[メモ帳]ファイル入出力編①解説

MainActivity.java

package com.example.frg;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Context;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.widget.EditText;
import android.widget.TextView;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

public class MainActivity extends AppCompatActivity {

EditText editText;
TextView showText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

editText = findViewById(R.id.editText);
showText = findViewById(R.id.showText);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.memochou_menu, menu);
return true;
}

public boolean onOptionsItemSelected(MenuItem item){
switch (item.getItemId()) {
case R.id.save:
save();
return true;
case R.id.read:
read();
return true;
default:
return super.onOptionsItemSelected(item);
}
}

public void save(){
try{
FileOutputStream fileOutputStream = openFileOutput("Sample.txt", Context.MODE_PRIVATE);

BufferedWriter saveText = new BufferedWriter(new OutputStreamWriter(fileOutputStream));

saveText.write(editText.getText().toString());

saveText.flush();

fileOutputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}

public void read(){
try {
FileInputStream fileInputStream = openFileInput("Sample.txt");
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(fileInputStream));
StringBuilder sequence = new StringBuilder();
String readText;
while ((readText = bufferedReader.readLine())!=null){
sequence.append(readText);
}
showText.setText(sequence.toString());
fileInputStream.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}


}
}
 

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity"
android:gravity="center_horizontal"
android:orientation="vertical">

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="入力したいテキストを下に入力してください。"/>

<EditText
android:id="@+id/editText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="40sp"/>

<TextView
android:id="@+id/showText"
android:layout_width="match_parent"
android:layout_height="match_parent"/>


</LinearLayout>

memochou_menu.xml(res下にmenuディレクトリを作成し、そこに作成)

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:android="http://schemas.android.com/apk/res/android">

<item android:id="@+id/save"
android:title="@string/save" />
<item android:id="@+id/read"
android:title="@string/read" />
</menu>

string.xml も変更します。

<resources>
<string name="app_name">Frg</string>
<string name="read">読み込み</string>
<string name="save">保存</string>
</resources>

 

保存場所は、調べたのですが不明です。

 

下記を参照にしてます。

https://developer.android.com/guide/topics/ui/menus?hl=ja