如何在FileOutputStream中保存两个以上的字符串并在不同的textview中读取这些字符串?

时间:2014-02-17 17:28:09

标签: java android

我想在手机的内部存储空间中保存三个字符串。但是在获得输出时我遇到了问题。以下是该计划。我刚刚写下了重要的部分而不是其他不重要的代码。

在这三个字符串中,string1在Spinner中传递(此处未显示,因为它对我来说不是问题)。

现在,我想在string2textview1 string3上加载textview2。 我得到的输出是textview1 string2string3以及textview2,我同时得到string2string3

有人可以帮助我string2 textview1string3 textview2上的 EditText filename, entry, pass; String FILENAME, JOUR, PASSWORD; filename = (EditText) findViewById(R.id.editText3); entry = (EditText) findViewById(R.id.editText1); pass = (EditText) findViewById(R.id.editText2); public void onClick(View arg0) { // TODO Auto-generated method stub FILENAME = filename.getText().toString(); if (FILENAME.contentEquals("")){ FILENAME = "passwordprotect"; } JOUR = entry.getText().toString(); PASSWORD = pass.getText().toString(); try { FileOutputStream fos = openFileOutput(FILENAME, Context.MODE_PRIVATE); fos.write(JOUR.getBytes()); fos.write(PASSWORD.getBytes()); fos.close(); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }

PS:你看到输出上的微调器,这是我的输出。我只是留在那里让你明白我在旋转器中已经有了string1。

Write.java

 TextView entry, passentry;
 entry = (TextView)findViewById(R.id.textView1);
 passentry = (TextView)findViewById(R.id.textView2);

    private void openFile(String selectFile) {
                // TODO Auto-generated method stub


String value = "";

            FileInputStream fis;

            try {
                fis = openFileInput(selectFile);
                byte[] input = new byte[fis.available()];
                while(fis.read(input) != -1){
                    value += new String(input);

                }
                fis.close();
            } catch (FileNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            entry.setText(value);
            passentry.setText(value);
        }

Read.java

Spinner->string1
textview1->string2string3
textview2->string2string3

我得到了输出。

{{1}}

2 个答案:

答案 0 :(得分:1)

确定要分割这两个字符串的内容。

根据您在这些文本视图中存储的文本类型,不同的东西可能就足够了。例如,您可以简单地使用换行符来分隔两者。然后,您可以将字符串value拆分为两部分,将每个部分存储在相应的文本视图中。

基本上以某种方式划分文件中的字符串,然后将value字符串拆分为两部分,并将每个部分存储到相应的文本视图中。

另一方面,考虑到您只是存储字符串,您是否考虑过使用Android Preferences

答案 1 :(得分:0)

这是写和读

public static void read(Context context , String file , TextView tv ) {
    try {
        InputStream stream = context.openFileInput(file);
        if(stream != null ) {
            InputStreamReader inputStreamReader = new InputStreamReader(stream);
            BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
            String receiveString = "";
            StringBuffer stringBuffer = new StringBuffer();
            while ((receiveString = bufferedReader.readLine()) != null) {
                stringBuffer.append(receiveString);
            }
            tv.setText(stringBuffer);
            stream.close();
        }

    }catch (FileNotFoundException e){}
    catch (IOException e){}
}

public static void write(Context context , String file ,String str , EditText et) {
    str = et.getText().toString();

    try {
        FileOutputStream fos = context.openFileOutput(file, 0);
        fos.write(str.getBytes());
        fos.close();
    }catch(IOException e){
        e.printStackTrace();
    }

} 

现在像你那样在你的班级上返回这个方法

write(this , FILENAME1 , JOUR, entry);
write(this , FILENAME2 , PASSWORD, pass);
read(this , FILENAME1 , entry);
read(this , FILENAME2 , passentry);