使用以下代码,我尝试写入我的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卡上创建文件,但仍然是同样的错误。如果文件不存在,是否有创建文件的代码?
答案 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();
}