是否可以在内部存储中存储多个字符串值?

时间:2014-03-31 06:26:31

标签: android

是否可以在内部存储中存储多个字符串值。如果可能,请提供一般语法在内部存储中存储多个字符串值。

1 个答案:

答案 0 :(得分:0)

作为例子

制作如下布局

<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"
   android:paddingBottom="@dimen/activity_vertical_margin"
   android:paddingLeft="@dimen/activity_horizontal_margin"
   android:paddingRight="@dimen/activity_horizontal_margin"
   android:paddingTop="@dimen/activity_vertical_margin"
   tools:context=".MainActivity" >

   <Button
      android:id="@+id/button1"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_alignParentTop="true"
      android:layout_centerHorizontal="true"
      android:layout_marginTop="182dp"
      android:onClick="save"
      android:text="@string/save" />

   <Button
      android:id="@+id/button2"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_alignLeft="@+id/button1"
      android:layout_alignRight="@+id/button1"
      android:layout_below="@+id/button1"
      android:layout_marginTop="46dp"
      android:onClick="read"
      android:text="@string/read" />

   <EditText
      android:id="@+id/editText1"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_alignLeft="@+id/button1"
      android:layout_alignParentTop="true"
      android:layout_marginTop="23dp"
      android:ems="10"
      android:inputType="textMultiLine" >

      <requestFocus />
   </EditText>

</RelativeLayout>

并为android活动编写如下代码

package com.example.storage;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStreamReader;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;

public class MainActivity extends Activity {

   private EditText et;
   private String data;
   private String file = "mydata";
   @Override
   protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
      et = (EditText)(findViewById(R.id.editText1));

   }

   public void save(View view){
      data = et.getText().toString();
      try {
         FileOutputStream fOut = openFileOutput(file,MODE_WORLD_READABLE);
         fOut.write(data.getBytes());
         fOut.close();
         Toast.makeText(getBaseContext(),"file saved",
         Toast.LENGTH_SHORT).show();
      } catch (Exception e) {
         // TODO Auto-generated catch block
         e.printStackTrace();
      }
   }
   public void read(View view){
      try{
         FileInputStream fin = openFileInput(file);
         int c;
         String temp="";
         while( (c = fin.read()) != -1){
            temp = temp + Character.toString((char)c);
         }
         et.setText(temp);
         Toast.makeText(getBaseContext(),"file read",
         Toast.LENGTH_SHORT).show();

      }catch(Exception e){

      }
   }
   @Override
   public boolean onCreateOptionsMenu(Menu menu) {
      // Inflate the menu; this adds items to the action bar if it is present.
      getMenuInflater().inflate(R.menu.main, menu);
      return true;
   }

}

以下是res / values / string.xml的内容。

<?xml version="1.0" encoding="utf-8"?>
<resources>

   <string name="app_name">Storage</string>
   <string name="action_settings">Settings</string>
   <string name="hello_world">Hello world!</string>
   <string name="save">save to intenal storage</string>
   <string name="read">load from intenal storag</string>

</resources>

为了你的目的,你可以做的是,你可以使用像管道标志一样的分隔符作为'|'在插入字符串值时,在两个字符串之间,而不是在读取文件之后,您可以将字符串值作为分隔符“|”的基础。

更多阅读http://www.tutorialspoint.com/android/android_internal_storage.htm