0

私はアンドロイドアプリで読み書き操作をしています。onCreate では、ファイルが読み取られて editext に表示され、編集可能になります。保存が押されると、データは onCreate で読み取られる同じファイルに書き込まれます。しかし、エラーが発生しました。ディレクトリにそのようなファイルはありません。理解できません。保存ボタンが押されたときにファイルを作成しています。何か案は?

Java コード:

 EditText Name;
 EditText Age;
 EditText Height;
 EditText Weight;
 EditText MedHistory;

@Override
 public void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.activity_medicalhistory);

     Name = (EditText) findViewById(R.id.medhistName);
     Age = (EditText) findViewById(R.id.medhistAge);
     Height = (EditText) findViewById(R.id.medhistHeight);
     Weight = (EditText) findViewById(R.id.medhistWeight);
     MedHistory = (EditText) findViewById(R.id.MedHist);

     int i = 0;

     String MedHistData[] = new String[5];

     try {
            File myFile = new File("/data/data/Project.Package.Structure/files/MedicalHistory.txt");
            FileInputStream fIn = new FileInputStream(myFile);
            BufferedReader myReader = new BufferedReader(new InputStreamReader(fIn));
            String aDataRow = "";
            while ((aDataRow = myReader.readLine()) != null)
            {
                MedHistData[i] = aDataRow;
                i++;
            }
            i = 0;
            Name.setText(MedHistData[0]);
            Age.setText(MedHistData[1]);
            Height.setText(MedHistData[2]);
            Weight.setText(MedHistData[3]);
            MedHistory.setText(MedHistData[4]);
            myReader.close();

        } catch (Exception e) {
            Toast.makeText(getBaseContext(), e.getMessage(),
                    Toast.LENGTH_SHORT).show();
        }


     Button Save = (Button) findViewById(R.id.SaveBtn);
     Save.setOnClickListener(new OnClickListener() {

     public void onClick(View v) {
            try {
                File myFile = new File("/data/data/Project.Package.Structure/files/MedicalHistory.txt");
                myFile.createNewFile();
                FileOutputStream fOut = new FileOutputStream(myFile);
                OutputStreamWriter myOutWriter = new OutputStreamWriter(fOut);
                myOutWriter.append(Name.getText() + "\n");
                myOutWriter.append(Age.getText() + "\n");
                myOutWriter.append(Height.getText() + "\n");
                myOutWriter.append(Weight.getText() + "\n");
                myOutWriter.append(MedHistory.getText());
                myOutWriter.close();
                fOut.close();
                Toast.makeText(getBaseContext(),
                        "Medical History Saved'",
                        Toast.LENGTH_SHORT).show();
            } catch (Exception e) {
                Toast.makeText(getBaseContext(), e.getMessage(),
                        Toast.LENGTH_SHORT).show();
            }
        }
        }); 

 }
4

2 に答える 2

1

読み取り用にファイルを開くには openFileInput() メソッドを使用し、書き込みには openFileOutput() メソッドを使用する必要があります。これらの関数は、それぞれ FileInputStream と FileOutputStream を返します。

于 2012-08-21T17:09:07.910 に答える
0

私の推測では、ファイルへの書き込みアクセス権がありません。Android で書き込みを行う場合、特定のフォルダーにのみアクセスできます。見て

http://developer.android.com/guide/topics/data/data-storage.html#files内部

テキストファイルの書き方の簡単な例があります。

于 2012-08-21T16:45:43.507 に答える