创建txt文件,从中读取和读取Android

时间:2014-12-07 23:13:52

标签: android text line

我需要在应用启动时检查文件是否存在,如果不创建.. 我需要一个代码块来将文件附加到其中 我需要一个逐行读取该文本的代码块 而不是删除一行....

我在stackoverflow找到了这个代码,他们说该文件将在该位置创建......

//Here I have this :
//Do not hardcode "/data/"; use Context.getFilesDir().getPath() instead
//
String filePath = "/data/data/com.example.myapp/files/text.txt";
        File file = new File(filePath);
        if(file.exists()){
        //Do nothing
        } 
        else{
            try { 
                   final String TESTSTRING = new String("");         
                   FileOutputStream fOut = openFileOutput("text.txt", MODE_WORLD_READABLE);
                   OutputStreamWriter osw = new OutputStreamWriter(fOut); 
                   osw.write(TESTSTRING);
                   osw.flush();
                   osw.close();
                } catch (IOException ioe) 
                  {ioe.printStackTrace();}
        }
    }

要在文字中添加行,我就这样做了:

private void write(){
 S ="/data/data/com.example.myapp/files/text.txt";
        try {
            writer = new FileWriter(S, true);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    try {
         writer.write(emri.getText().toString() + "\n" + link.getText().toString());
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }finally {
           try {
            writer.close();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        }
    }

当我必须阅读它们时:

public class PlayList extends ListActivity {
ArrayList<String> listaE = new ArrayList<String>();
ArrayList<String> listaL = new ArrayList<String>();
InputStream instream;
int resh=0;

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        lexo();
        String[] mStringArray = new String[listaE.size()];
        mStringArray = listaE.toArray(mStringArray);
        setListAdapter(new ArrayAdapter<String>(PlayList.this,android.R.layout.simple_list_item_1,mStringArray));

    }
    private void lexo(){
        String S ="/data/data/com.example.myapp/files/text.txt";
        try {
            // open the file for reading
            instream = new FileInputStream(S);

            // if file the available for reading
            if (instream != null) {
              // prepare the file for reading
              InputStreamReader inputreader = new InputStreamReader(instream);
              BufferedReader buffreader = new BufferedReader(inputreader);

              String line;

              // read every line of the file into the line-variable, on line at the time
              do {
                 line = buffreader.readLine();
                 if ((resh % 2) == 0) {
                     listaL.add(line);
                    }

                    else {
                        listaE.add(line);
                    }
                 // do something with the line 
              } while (line != null);

            }
            } catch (Exception ex) {
                // print stack trace.
            } finally {
            // close the file.
            try {
                instream.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            }
    }

我的代码根本不起作用,并且缺少删除行的代码。 所以我需要的是:

  1. 要写入文件的代码(由于将在安装应用程序之前使用,因此将保存文件)
  2. 逐行读取该文件的代码(因此要在数组中添加,在一个数组中添加奇数行,在另一个数组中添加其他行)
  3. 从该文件中删除一行的代码(要在列表视图中添加的数组,当用户触摸该行时,触摸要删除的行)
  4. 在list-activity上添加行
  5. 非常感谢任何帮助, 感谢...

1 个答案:

答案 0 :(得分:1)

首先,您应该在应用的上下文中使用.getFilesDir().getPath(),而不是硬编码路径。这是你的第一个块中的评论。其次,像这样创建一个OutputStream

OutputStream out = new FileOutputStream(filePath);

如果您有一个名为InputStream的{​​{1}},则可以使用以下代码将其写入文件:

in

当你创建一个文件时,检查其余的(我没看过)并返回StackOverlow,如果它失败了。不要让我们任何人做所有的工作,好吗?将它撕成小部分并付出努力。

祝你工作顺利。