1

これは、ファイルを作成してプロジェクトディレクトリに書き込む初期段階のテストにすぎません。これは本当に速くなると思いましたが、何か間違ったことをしているのか、それとも適切に更新していないのでしょうか?

私がやりたいのは、ファイルを動的に作成してrawフォルダーに書き込むことができるようにすることです。

オブジェクトのArrayListを取得する、forループを使用してオブジェクトを個別に取得する、「write」を使用してファイルに書き込むなど、他の目的でいくつかのメソッドを使用します。

これが私のコードです:私が作成して書き込みたいファイルは、outputと呼ばれる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);

4

2 に答える 2

0

「マイ プロジェクト」フォルダは開発マシンにのみ存在するため、デバイスから書き込むことはできません。res/raw サブフォルダーのコンテンツは最終的にデバイスに保存されますが、(アプリのユーザー ID に関する限り) 読み取り専用の形式で保存されます。

代わりに、ランタイムで変更可能なデータをアプリケーションの内部ストレージ ディレクトリに保存する必要があります - getFileDir() および関連するメソッドを検索してください

または、存在する場合は外部ストレージ (つまり、sdcard) に保存します。SD カードに書き込む場合にのみ、アプリケーション マニフェストで SD カードのアクセス許可が必要になります。

これらの場所のいずれかのサブディレクトリにデータを配置する場合は、ファイルの場所を構成するすべてのディレクトリが実際に存在することを確認するか、作成する必要があります。

変更も可能なデータをパッケージ化する場合は、最初にパッケージ化されたデータを、変更可能なデータを持つことができるこれら 2 つの場所のいずれかにコピーする必要があります。

于 2012-06-20T22:53:09.173 に答える
0

Google で検索してみましょう

http://developer.android.com/guide/topics/data/data-storage.html#files外部

アクセス許可と getExternalStorage() の呼び出しが必要になります

于 2012-06-20T22:00:19.630 に答える