Android:将文本写入txt

时间:2013-06-07 11:53:20

标签: android file text fileoutputstream

使用以下代码,我尝试写入我的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");
                }

          }

清单中的许可:

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

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

6 个答案:

答案 0 :(得分: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() + "/");

答案 1 :(得分: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();
}

答案 2 :(得分: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){}

答案 3 :(得分: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();

答案 4 :(得分:0)

在sd卡上写任何文件之前,你需要检查是否安装了SD卡,如果没有,那么只需安装它然后使用外部存储路径在其上写文件。

您可以使用以下代码检查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



}

答案 5 :(得分: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卡内写入文本文件(/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();
         }