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 卡中写入时,它可以工作但不能使用外部。请建议。

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(传递 null 以接收应用程序文件目录的根目录)。如有必要,此方法将创建适当的目录。

如果您使用 API 级别 7 或更低版本,请使用 getExternalStorageDirectory() 打开代表外部存储根目录的文件。然后,您应该将数据写入以下目录:

/Android/数据//文件/

您还必须设置权限:

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 回答