I am thinking that this must not be a very difficult task to achieve and i have managed it with the HTC Desire but for some reason I cannot read from the Samsung Galaxy S SD card in my android application.
I use :
public String writeFile1(String text) {
File sdDir = Environment.getExternalStorageDirectory();
File myFile = new File(sdDir+"/TextFiles/patientDetails.txt");
try{
myFile.createNewFile();
FileOutputStream fOut = new FileOutputStream(myFile);
OutputStreamWriter myOutWriter =
new OutputStreamWriter(fOut);
myOutWriter.write(text);
myOutWriter.close();
fOut.close();
return "success";
}catch (IOException e){
e.printStackTrace();
return "fail";
开发者_如何学运维 }
}
and this works fine! The file content gets saved and i am very happy. However, when I do the reverse using...
//
File f = new File(Environment.getExternalStorageDirectory()+fileName);
FileInputStream fileIS = new FileInputStream(f);
BufferedReader buf = new BufferedReader(new InputStreamReader(fileIS));
String readString = new String();
//just reading each line and pass it on the debugger
String s = "";
while((readString = buf.readLine())!= null){
s+=readString;
}
return s;
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e){
e.printStackTrace();
}
I receive a file not found exception! I just wrote to it and can see what I wrote when I mount the SD Card.
Does someone know the solution to this? Thanks
You are using wrong constructor you should use
File f = new File(Environment.getExternalStorageDirectory(), "filename");
instead of
File f = new File(Environment.getExternalStorageDirectory()+fileName);
Now your code will work fine.
What happen when you initializing your file object like this
Environment.getExternalStorageDirectory()+fileName
in this what happen first you getting the path like this way
/sdcard
and concatenate with the file name then you getting the result this way
filename = "test.txt";
path > /sdcardtext.txt
now check that this file didn't found so beware check the complete path for file object.
next thing you can use like this way
File f = new File(Environment.getExternalStorageDirectory(), "filename");
精彩评论