Android - 读取内部数据

时间:2013-07-11 08:34:24

标签: android fileinputstream

我正在尝试创建app,我需要保存字符串,就像AppInventor中的TinyDB一样。所以,我发现那里http://developer.android.com/guide/topics/data/data-storage.html#filesInternal我正在寻找的是将数据保存到内部存储器,但我不知道如何阅读它。他们说:

从内部存储中读取文件:

  1. 调用openFileInput()并将其传递给要读取的文件的名称。这将返回一个FileInputStream。

  2. 使用read()从文件中读取字节。

  3. 然后用close()

  4. 关闭流

    但我不知道如何,我的代码永远无法运作。所以我用谷歌搜索了如何从内部存储读取,没有代码工作。你能告诉我,如何从内部存储中读取文本? :)

    这是代码:

        EditText tagbox = (EditText)findViewById(R.id.editText1);
        String tag = tagbox.toString();
        Context context = getApplicationContext();
    
    
        FileInputStream fis = context.openFileInput( tag );
        InputStreamReader in = new InputStreamReader(fis);
        BufferedReader br = new BufferedReader(in);
        String data = br.readLine();
    
            Toast.makeText(getApplicationContext(), data, Toast.LENGTH_LONG).show();
    

    好的,所以我找到了解决方案。存储数据的最简单方法,如AppInventor中的TinyDB,使用SharedPreferences:

     SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
    
     Edtior editor = preferences.edit();
    

    存储数据:

    editor.putString("key", "value");
    

    阅读数据:

    String value = preferences.getString("key");
    

2 个答案:

答案 0 :(得分:0)

        File selectedFile = new File(path + "/" + selectedFromList + ".txt");

         FileInputStream fstream = null;
         ArrayList sal = new ArrayList();
        try {
            fstream = new FileInputStream(selectedFile);

          BufferedReader br = new BufferedReader(new InputStreamReader(fstream));
          String strLine;
          //Read File Line By Line

            while ((strLine = br.readLine()) != null)   {
              // Print the content on the console
                sal.add(strLine);
              }
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
          //Close the input stream
          try {
            in.close();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

答案 1 :(得分:0)

好的,所以我找到了解决方案。存储数据的最简单方法,如AppInventor中的TinyDB,正在使用SharedPreferences:

SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);

Edtior editor = preferences.edit();

存储数据:

editor.putString("key", "value");

阅读数据:

String value = preferences.getString("key");