如何使用另一个Android应用程序从一个Android应用程序读取写入文件的数据

时间:2012-06-08 09:27:14

标签: java android android-emulator

我使用以下方法将数据写入一个Android应用程序中的文件

 private void writeFileToInternalStorage() {

    String eol = System.getProperty("line.separator");
    BufferedWriter writer = null;

 try{
    writer = new BufferedWriter(new OutputStreamWriter(openFileOutput("myFile.txt", MODE_WORLD_WRITEABLE|MODE_WORLD_READABLE)));
      writer.write("Hello world!");
    } 
    catch (Exception e) 
    {
        e.printStackTrace();
    } 
    finally 
    {
      if (writer != null) 
      {
        try 
        {
            writer.close();
        } 
        catch (IOException e) 
        {
            e.printStackTrace();
        }
      }
    }
}

然后我尝试使用此方法从另一个Android应用程序中读取该文件

 private void readFileFromInternalStorage(){
    String eol = System.getProperty("line.separator");
    BufferedReader input = null;
    try 
    {
        input = new BufferedReader(new InputStreamReader(openFileInput("myFile1.txt")));
         String line;
        StringBuffer buffer = new StringBuffer();
        while ((line = input.readLine()) != null) 
        {
            buffer.append(line + eol);


        }

       TextView tv = (TextView) findViewById(R.id.textView);  
        tv.setText(buffer.toString().trim());

    } 
    catch (Exception e) 
    {
        e.printStackTrace();
    } 
    finally 
    {
        if (input != null) 
        {
            try 
            {
                input.close();
            } 
            catch (IOException e) 
            {
                e.printStackTrace();
            }
        }
    }
}

第二种方法无法读取文件。我还添加了读写权限,但它只显示空白屏幕。可能是什么错误,我该如何纠正?我是Android编程的新手,需要你的帮助。

谢谢!

2 个答案:

答案 0 :(得分:1)

问题是

openFileOutput("myFile.txt", MODE_WORLD_WRITEABLE|MODE_WORLD_READABLE))

文档说:

  

此文件将写入

中相对于您的应用的路径

所以情况就是你在相对于应用程序1的路径中编写文件并尝试从中读取它 相对于应用程序的路径2.

您应该能够调用Environment.getExternalStorageDirectory()来获取SD卡的根路径并使用它来创建FileOutputStream。从那里,只需使用标准的java.io例程。

查看以下代码段将文件写入SD卡。

private void writeToSDCard() {


try
        {
            File file = new File(Environment.getExternalStorageDirectory(),
                    "filename");
            BufferedWriter writer = new BufferedWriter(new FileWriter(file));
            writer.write("Hello World");
            writer.close();
        } catch (IOException e)
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
}

查看下面的代码段以读取保存在SD卡上的文件。

private void readFileFromSDCard() {
    File directory = Environment.getExternalStorageDirectory();
    // Assumes that a file article.rss is available on the SD card
    File file = new File(directory + "/article.rss");
    if (!file.exists()) {
        throw new RuntimeException("File not found");
    }
    Log.e("Testing", "Starting to read");
    BufferedReader reader = null;
    try {
        reader = new BufferedReader(new FileReader(file));
        StringBuilder builder = new StringBuilder();
        String line;
        while ((line = reader.readLine()) != null) {
            builder.append(line);
        }
    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        if (reader != null) {
            try {
                reader.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

答案 1 :(得分:0)

最好的办法是将它放入scdcard中,使其成为/sdcard/Android/data/package/shared/