如何在一个Activity&中写入文本文件在另一个Activity中读取该文件?

时间:2012-06-08 19:43:18

标签: android file read-write

我能够在SAME活动中编写然后读取文本文件,但在从另一个Activity写入文本文件后,我无法读取该文本文件。

例如: 活动A 创建并写入文本文件。 活动B 读取该文本文件。

我使用此代码写入活动A

中的文本文件
FileOutputStream fos = null;
        OutputStreamWriter osw = null;
        try 
        {
            fos = openFileOutput("user_info.txt", Context.MODE_WORLD_WRITEABLE);
            osw = new OutputStreamWriter(fos);
            osw.write("text here");
            osw.close();
            fos.close();
        } 
        catch (FileNotFoundException e) 
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

然后我使用此代码尝试阅读活动A 创建的同一文本文件,但我得到FileNotFoundException

            try 
            {
                FileInputStream fis = openFileInput("user_info.txt");
                InputStreamReader isr = new InputStreamReader(fis);
                BufferedReader buff = new BufferedReader(isr);
                String line;
                while((line = buff.readLine()) != null)
                {

                    Toast.makeText(this, line, Toast.LENGTH_LONG).show();
                }
            } 
            catch (FileNotFoundException e) 
            {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } 
            catch (IOException e) 
            {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

有谁知道为什么我会收到FileNotFoundException

这是路径问题吗?

2 个答案:

答案 0 :(得分:0)

不知道如何构建你的应用程序,但是,你得到的错误看起来像路径问题,你确定两个活动都在同一个文件夹中吗? 如果没有,您需要为文本文件或相对路径(如:“../ text.txt”)设置一个绝对路径(如:“/ home / user / text.txt”)。 如果您不确定,请尝试使用某些命令(如

)打印活动的当前路径
new File(".").getAbsolutePath();

而且,虽然我不能说我是Android的专家,但你确定你的文件需要Context.MODE_WORLD_WRITEABLE吗?如果没有其他应用程序正在读取或写入它,那么它就没有必要了,对吧?

答案 1 :(得分:0)

这肯定是一个路径问题。  你可以写这样的

fpath=Environment.getExternalStorageDirectory().getAbsolutePath()+"/"+"yourdirectory";

File custdir=new File(fpath);
if(!custdir.exists())
        {
            custdir.mkdirs();

        }
                    File savedir=new File(custdir.getAbsolutePath());
                    File file = new File(savedir, filename);

                    if(file.exists())
                    {
                        file.delete();
                    }
                    FileOutputStream fos;
                    byte[] data = texttosave.getBytes();
                    try {
                        fos = new FileOutputStream(file);
                        fos.write(data);
                        fos.flush();
                        fos.close();
                        Toast.makeText(getBaseContext(), "File Saved", Toast.LENGTH_LONG).show();
                        finish();
                    } catch (FileNotFoundException e) {
                        Toast.makeText(getBaseContext(), "Error File Not Found", Toast.LENGTH_LONG).show();
                        Log.e("fnf", ""+e.getMessage());
                        // handle exception
                    } catch (IOException e) {
                        // handle exception
                        Toast.makeText(getBaseContext(), "Error IO Exception", Toast.LENGTH_LONG).show();
                    }

你可以像

一样阅读
String locatefile=Environment.getExternalStorageDirectory().getAbsolutePath()+"/"+"yourdirectory"+"/filename";




try {
            br=new BufferedReader(new FileReader(locatefile));
                     while((text=br.readLine())!=null)
    {
        body.append(text);
        body.append("\n");

    }
 } catch (FileNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();

 } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }