Android
 Computer >> コンピューター >  >> プログラミング >> Android

【Android入門】テキストファイルを作成してデータを書き込む方法をわかりやすく解説

このチュートリアルでは、Androidアプリでテキストファイルを作成し、そこにデータを書き込む方法を段階的に解説します。内部ストレージへのファイル保存は、ユーザーが入力したメモや設定値などを端末内に永続化したい場合に役立つ基本的なテクニックです。

手順1:新規プロジェクトを作成する

まず、Android Studioで新しいプロジェクトを作成します。メニューから「File」→「New Project」を選択し、必要な項目を入力してプロジェクトを作成してください。

手順2:レイアウトファイル(activity_main.xml)を編集する

res/layout/activity_main.xml に以下のコードを記述します。画面にはタイトル用のTextView、テキスト入力用のEditText、書き込み用のButtonを配置しています。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android"
    xmlns:app="https://schemas.android.com/apk/res-auto"
    xmlns:tools="https://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:background="#008080"
        android:padding="5dp"
        android:text="Android ファイルへテキストを書き込む"
        android:textColor="#fff" />

    <EditText
        android:id="@+id/editText1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:layout_below="@+id/textView1"
        android:layout_marginTop="22dp"
        android:ems="10"
        android:layout_margin="5dp">
        <requestFocus />
    </EditText>

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:layout_below="@+id/editText1"
        android:text="ファイルにテキストを書き込む"
        android:onClick="WriteBtn"
        android:layout_margin="5dp"/>

</RelativeLayout>

手順3:MainActivity.java を実装する

src/MainActivity.java に以下のコードを記述します。ボタンが押されると openFileOutput() メソッドでファイルを開き、EditTextに入力された文字列を書き込みます。

package com.example.sample;

import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

    EditText textmsg;
    static final int READ_BLOCK_SIZE = 100;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        textmsg = (EditText) findViewById(R.id.editText1);
    }

    // テキストをファイルに書き込む
    public void WriteBtn(View v) {
        // 入力されたテキストをファイルに書き込む
        try {
            FileOutputStream fileout = openFileOutput("mytextfile.txt", MODE_PRIVATE);
            OutputStreamWriter outputWriter = new OutputStreamWriter(fileout);
            outputWriter.write(textmsg.getText().toString());
            outputWriter.close();
            // 保存完了のメッセージを表示
            Toast.makeText(getBaseContext(), "ファイルが正常に保存されました!",
                    Toast.LENGTH_SHORT).show();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

補足: 古いサンプルでは android.support.v7.app.AppCompatActivity が使われていますが、現在のAndroid StudioではAndroidXが標準のため、androidx.appcompat.app.AppCompatActivity をインポートしてください。

手順4:AndroidManifest.xml を確認する

manifests/AndroidManifest.xml に以下のコードを記述します。このサンプルでは特別な権限は不要ですが、ランチャーアクティビティの設定が正しく行われていることを確認しましょう。

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android"
    package="com.example.sample">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

ポイント解説:主要なAPIの役割

  • openFileOutput():アプリ専用の内部ストレージにファイルを作成または開くためのメソッドです。
  • MODE_PRIVATE:他のアプリからアクセスできないプライベートなファイルとして作成するモードです。既存ファイルに追記したい場合は MODE_APPEND を指定します。
  • OutputStreamWriter:文字列データをバイトストリームに変換して書き込むためのクラスです。使用後は必ず close() を呼び出しましょう。

アプリを実行してみよう

それでは、実際にアプリを動かしてみましょう。ここでは実機のAndroidスマートフォンをパソコンに接続している前提で説明します。Android Studioからアプリを実行するには、プロジェクト内のアクティビティファイルを開き、ツールバーの「Run」アイコンをクリックします。デバイス選択ダイアログで接続したモバイル端末を選択すると、端末に以下のような画面が表示されます。

【Android入門】テキストファイルを作成してデータを書き込む方法をわかりやすく解説

EditTextに任意のテキストを入力してボタンをタップすると、「mytextfile.txt」というファイルがアプリの内部ストレージに保存されます。保存先は「/data/data/<パッケージ名>/files/」ディレクトリ配下であり、Device File Explorerなどを使えば実際のファイル内容を確認できます。

  1. 新しいOutlookプロファイルを作成してOutlookデータ(*.pst)をインポートする方法

    現在のOutlookプロファイルで発生している問題を解消したい場合や、特定のメールアカウントに別の個人用データファイル(.pst)を割り当てたい場合など、新しいOutlookプロファイルを作成する必要があるケースはいくつかあります。 このチュートリアルでは、Outlook 2016、2013、2010、2007、2003において、新しいOutlookプロファイル(メインまたはサブ)を作成する手順を解説します。後半では、新しく作成したOutlookプロファイルに、既存の個人用フォルダーデータファイル(例:古いPCから持ち出したOutlookの.pstファイル)をインポートする方法を紹介します。

  2. テキストファイルからExcelにデータをインポートする3つの方法

    必要なデータがテキストファイルに保存されている場合、そのデータをExcelブックに取り込んで、さまざまな操作や分析を行いたいことがあります。この記事では、テキストファイルからExcelへデータをインポートするための、シンプルかつ効果的な3つの方法をわかりやすく解説します。 説明には、次のようなテキストファイル内のデータをサンプルとして使用します。このデータには、ある会社の営業担当者(Salesman)、製品(Product)、売上(Sales)の情報が含まれています。これらの情報をExcelワークシートに取り込んでいきましょう。 テキストファイルからExcelにデータをインポートする3つの方