4

使用以下代码,我尝试写入我的 sdcard:

public void writedata(String data) {
          //BufferedWriter out = null;

          System.out.println(data);
          try{

              FileOutputStream out = new FileOutputStream(new File("/sdcard/tsxt.txt"));
              out.write(data.getBytes());
              out.close();  

                } catch (Exception e) { //fehlende Permission oder sd an pc gemountet}
                    System.out.println("CCCCCCCCCCCCCCCCCCCCCCCALSKDJLAK");
                }

          }

Manifest 中的权限:

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

但是现在,当我打开文件时,里面什么都没有。问题出在哪里?我肯定data有一些价值。

编辑:

我在 LogCat 中收到此消息:

02-06 01:59:51.676: W/System.err(1197): java.io.FileNotFoundException: /storage/sdcard0/sdcard/tsxt.txt: open failed: ENOENT (No such file or directory)

我试图在 sdcard 上创建文件,但仍然是同样的错误。如果文件不存在,是否有创建文件的代码?

4

6 回答 6

5

试试这个代码:

File sdCard = Environment.getExternalStorageDirectory();
File dir = new File (sdCard.getAbsolutePath() + "/dir");

File file = new File(dir, "tsxt.txt");

FileOutputStream f = new FileOutputStream(file);

所以文件的路径不正确。您应该删除目录名称:

File dir = new File (sdCard.getAbsolutePath() + "/");
于 2013-06-07T11:59:26.520 回答
2

尝试这个:

BufferedWriter out;         
try {

FileWriter fileWriter= new FileWriter(Environment.getExternalStorageDirectory().getPath()+"/tsxt.txt")

out = new BufferedWriter(fileWriter);

out.write("Your text to write");

out.close(); 

}catch (FileNotFoundException e) {
 e.printStackTrace();
}catch (IOException e) {
 e.printStackTrace();
}
于 2013-06-07T12:07:47.743 回答
1
  try{
    File myFile = new File("/sdcard/tsxt.txt");
    myFile.createNewFile();
    FileOutputStream fOut = new FileOutputStream(myFile);
    OutputStreamWriter myOutWriter = new OutputStreamWriter(fOut);
    myOutWriter.append("your data here");
    myOutWriter.close();
    fOut.close();
}catch(Exception e){}
于 2013-06-07T12:45:40.077 回答
0

尝试这个

 FileOutputStream fOut =openFileOutput(Environment.getExternalStorageDirectory().getPath()+"/tsxt.txt",MODE_WORLD_READABLE);
 OutputStreamWriter osw = new OutputStreamWriter(fOut);
//---write the string to the file---
 osw.write(str);
 osw.flush();
 osw.close();
于 2013-06-07T12:39:27.807 回答
0

在 sd 卡上写入任何文件之前,您需要检查是否已安装 sdcard,如果没有,则只需安装它,然后使用外部存储路径将文件写入其上。

您可以使用以下代码检查是否安装了 sdcard

static public boolean hasStorage(boolean requireWriteAccess) {
    //TODO: After fix the bug,  add "if (VERBOSE)" before logging errors.
    String state = Environment.getExternalStorageState();
    Log.v(TAG, "storage state is " + state);

    if (Environment.MEDIA_MOUNTED.equals(state)) {
        if (requireWriteAccess) {
            boolean writable = checkFsWritable();
            Log.v(TAG, "storage writable is " + writable);
            return writable;
        } else {
            return true;
        }
    } else if (!requireWriteAccess && Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) {
        return true;
    }
    return false;
}

if(hasStorage(true)){

//call here your writedata() function



}
于 2013-06-07T12:40:02.150 回答
0

该代码运行良好..

public File getAlbumStorageDir(String albumName) {
        // Get the directory for the user's public pictures directory.
        File file = new File(Environment.getExternalStorageDirectory() + "/files", albumName);
       Log.d("File", "Bug file Created" + file.getAbsolutePath());
        return file;
    }`

将文本文件写入 sd Card(/storage/sdcard0/files/bugReport.txt)

 try{
             outputStream = new FileOutputStream(this.getAlbumStorageDir(bugReport.txt));
             outputStream.write(report.toString().getBytes());
             Log.d("File","Report Generated");
             outputStream.close();
         }
         catch(Exception e){
             e.printStackTrace();
         }
于 2014-03-12T10:33:33.080 回答