0

カードとして外部にファイルを書き込むために非常に多くの方法を試しましたが、機能しません。何をすべきか教えてください。

私が書いたコードスニペットは次のとおりです。

final String directoryFile = "file:///"+"mnt/extsd/Test";
    String filename = "TextData.txt";
    Context context;

    //String file=Environment.getExternalStorageDirectory()+ "/TextData.txt";
    //String file = "mnt/extsd/TextData.txt";



    //String file=Environment.getExternalStorageDirectory()+ "/RudimentContent/test.txt";
    //File root = android.os.Environment.getExternalStorageDirectory(); 
    //File dir = new File (root.getAbsolutePath() + "/download");
    //File path = Environment.getExternalStorageDirectory();
    //String filename = "TextData.txt";
    //String fileName = "TextData.txt";
    //String path = "Environment.getExternalStorageDirectory()/TextData.txt";
    //File path = Environment.getExternalStorageDirectory();

public void onClick(View v) 
            {
                // write on SD card file data in the text box
                // dir.mkdirs();
                //File file = new File(dir, "myData.txt");



                //String fileName = surveyName + ".csv";
                //String headings = "Hello, world!";



                //File file = new File(path, fileName);
                //path.mkdirs();
                //OutputStream os = new FileOutputStream(file);
                //os.write(headings.getBytes());




                //create path

                //create file
                //File outFile = new File(Environment.getExternalStorageDirectory(), filename);


                //File directoryFile = new File("mnt/extsd", "Test");

                //directoryFile.mkdirs();

                //create file
                //File file = new File(Environment.getExternalStorageDirectory(), filename);

                try{
                    File myFile = new File(directoryFile, filename);                //device.txt
                    myFile.createNewFile();
                    FileOutputStream fOut = new FileOutputStream(myFile);

                    OutputStreamWriter myOutWriter = new OutputStreamWriter(fOut);
                    myOutWriter.append(txtData.getText());
                    myOutWriter.close();
                    fOut.close();
                    Toast.makeText(getBaseContext(),"Done writing SD "+myFile.getPath(),Toast.LENGTH_SHORT).show();
                } catch (Exception e) {
                    Toast.makeText(getBaseContext(), e.getMessage(),Toast.LENGTH_SHORT).show();
                }
            }
        });

コメントしたので、コードも試してみてください。内部SDカードに書き込むと、機能しますが、外部SDカードでは機能しません。提案してください。

4

4 に答える 4

1

私は前にこれを持っていました。この例外が発生する理由は、フレームワークがファイルとフォルダーを処理するいくつかの奇妙な方法によるものです。

私の場合、私はテストしていて、すべてが機能していて、テストフォルダーを削除しました。それ以来、システムは削除されたフォルダーに書き込みを試み続けています。プロジェクトを電話から削除して再起動し、再び作業を開始しました。

さらに、この回答を簡単に読むことをお勧めしますAndroidで一時ファイルを作成する最良の方法は何ですか? およびこの回答のコメント... 優れたアプリを作成したい場合に役立つ情報がたくさんあるためです。

于 2012-10-11T13:48:37.977 に答える
0

このように許可を設定するだけです

android.permission.WRITE_EXTERNAL_STORAGE
于 2012-10-11T13:25:30.257 に答える
0

APIレベル8以上を使用している場合は、getExternalFilesDir()を使用して、ファイルを保存する必要のある外部ストレージディレクトリを表すファイルを開きます。このメソッドは、DIRECTORY_MUSICやDIRECTORY_RINGTONESなどの必要なサブディレクトリのタイプを指定するtypeパラメータを取ります(アプリケーションのファイルディレクトリのルートを受け取るにはnullを渡します)。このメソッドは、必要に応じて適切なディレクトリを作成します。

APIレベル7以下を使用している場合は、getExternalStorageDirectory()を使用して、外部ストレージのルートを表すファイルを開きます。次に、次のディレクトリにデータを書き込む必要があります。

/ Android / data // files /

権限も設定する必要があります。

android.permission.WRITE_EXTERNAL_STORAGE

于 2012-10-11T13:26:06.697 に答える
0

これを試して

String root = Environment.getExternalStorageDirectory().toString();
File myDir = new File(root + "/saved_images");    
myDir.mkdirs();
Random generator = new Random();
int n = 10000;
n = generator.nextInt(n);
String fname = "Image-"+ n +".jpg";
File file = new File (myDir, fname);
if (file.exists ()) file.delete (); 
try {
       FileOutputStream out = new FileOutputStream(file);
       finalBitmap.compress(Bitmap.CompressFormat.JPEG, 90, out);
       out.flush();
       out.close();

} catch (Exception e) {
       e.printStackTrace();
}

これをマニフェストに追加します

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

編集: この行を使用すると、ギャラリー ビューで店舗の画像を表示できます。

 sendBroadcast(new Intent(
 Intent.ACTION_MEDIA_MOUNTED,
          Uri.parse("file://" + Environment.getExternalStorageDirectory())));
于 2012-10-11T13:31:17.430 に答える