1

这只是创建文件并将其写入项目目录的早期测试。我认为这会很快,但要么我做错了什么,要么我没有正确更新某些东西?

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

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

这是我的代码:我要创建和写入的文件称为 txt 文件,称为 output。

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

//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);

4

2 回答 2

0

让我为你谷歌一下

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

您需要获得许可并调用 getExternalStorage()

于 2012-06-20T22:00:19.630 回答
0

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

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

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

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

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

于 2012-06-20T22:53:09.173 回答