如何将我的文件写入Android目录

时间:2012-06-20 21:57:18

标签: android filewriter bufferedwriter

这只是创建和编写文件到项目目录的早期阶段测试。我认为这会很快,但要么我做错了,要么我没有正确更新?

我想做的就是能够动态创建文件并将其写入我的原始文件夹。

我使用了几种方法来处理其他事情,例如获取对象的ArrayList,使用for循环单独获取它们,然后使用“write”写入文件。

这是我的代码:我想要创建和写入的文件称为输出的txt文件。

我真的很感谢有人为我看这个,非常感谢你!

//for writing file...
  public static void writeGrids(List<Grid> grids)
  {
      for(int i = 0; i < grids.size(); i++)
      {

          try {
            write(grids.get(i));
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
      }
  }

 static void write(Grid grid) throws IOException
  {

     try
     {
     FileWriter fstream = new FileWriter("/My Project/res/raw/output.txt");
     BufferedWriter out = new BufferedWriter(fstream);
     //FILE DIR!!!!!!

          out.write(grid.gridNickName + ";" + grid.gridName + ";" +
                  grid.firstName + ";" + grid.lastName + ";" +
                  grid.password + ";" + grid.loginURI + ";");

     out.close();
     }
     catch (Exception e)
     {
         System.err.println("Error: " + e.getMessage());
     }

  }

这是尝试将内容保存到内部存储的更新版本。这会是一个理想的解决方案吗?

更新代码:

//for writing file...
public void writeGrids(List<Grid> grids)
{
      for(int i = 0; i < grids.size(); i++)
      {

          try {
            write(grids.get(i));
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
      }
}

void write(Grid grid) throws IOException
{    

     try
     {
      FileOutputStream fos;
     String FILENAME = "InternalString";

     fos = openFileOutput(FILENAME, Context.MODE_PRIVATE);
     String data = grid.getGridNickName() + ";" + grid.getGridName() + ";" +
              grid.getFirstName() + ";" + grid.getLastName() + ";" +
              grid.getPassword() + ";" + grid.getLoginURI() + ";";
     fos.write(data.getBytes());
     fos.close();

     }
     catch (Exception e)
     {
         System.err.println("Error: " + e.getMessage());
     }

}

用户会调用write方法来启动这样的事情.. writeGrids(myNewArrayList);

2 个答案:

答案 0 :(得分:0)

让我谷歌那个为你

http://developer.android.com/guide/topics/data/data-storage.html#filesExternal

您需要获得许可并致电getExternalStorage()

答案 1 :(得分:0)

“我的项目”文件夹仅存在于您的开发计算机上,因此无法由设备编写。虽然res / raw子文件夹的内容最终会在设备上显示,但它们会以只读(就应用程序的用户ID而言)形式结束。

您需要将运行时可更改的数据存储在应用程序内部存储目录中 - 查找getFileDir()和相关方法

或外部存储(即SD卡)(如果存在)。当且仅当您要写入SD卡时,您需要应用程序清单中的SD卡权限。

如果要将数据放在其中任何一个位置的子目录中,则必须确保包含文件位置的所有目录实际存在,否则创建它们。

如果要打包也可以更改的数据,则必须先将打包数据复制到这两个可以获得可更改数据的位置之一。