我想我已经查看了所有相关问题,但仍然无法使其发挥作用。
以下是代码:
File sdCard = Environment.getExternalStorageDirectory();
File directory= new File (sdCard.getAbsolutePath() + appName);
directory.mkdirs();
File file = new File(directory,fileName);
该文件夹已创建,但我收到一条错误消息,指出该文件不存在。 appName是一个包含文件夹名称的字符串,可以正常工作。 fileName是一个字符串,包含我想要包含的文件的名称。
我已将权限包含在清单中。
我做错了什么?
更新
代码尝试同时创建一个子目录和一个文件,这是隐藏的,因为代码使用的是命名的String而不是String文字。添加中间步骤来创建子目录解决了这个问题。
答案 0 :(得分:3)
如果创建了目录,那么您就在正确的轨道上。在您的代码中,您实际上并未在SD卡上创建文件。如果您需要创建文件,请执行以下操作:
File sdCard = Environment.getExternalStorageDirectory();
File file = new File(sdCard.getAbsolutePath() + appName + "/" + fileName);
directory.mkdirs();
file.createNewFile()
这只是名义上的。实际上将fileName
分成单独的子文件夹和实际文件并单独处理它们会好得多。
答案 1 :(得分:1)
试试这个:
在此我创建了一个字符串的文本文件(.txt文件)。
public void createFileFromString(String text)
{
File logFile = new File("sdcard/xmlresponseiphone.txt");
if (!logFile.exists())
{
try
{
logFile.createNewFile();
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
try
{
//BufferedWriter for performance, true to set append to file flag
BufferedWriter buf = new BufferedWriter(new FileWriter(logFile, true));
buf.append(text);
buf.newLine();
buf.close();
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
测试一下,看看你错过了什么:)
答案 2 :(得分:0)
尝试这样的事情。在这种情况下,我正在保存图像!
用于创建目录:
File directory = new File(Environment.getExternalStorageDirectory()
+ File.separator + appName);
directory.mkdirs();
并保存到它 public void save(位图图,上下文上下文,字符串名,字符串时间,现在布尔值)抛出IOException {
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
graph.compress(Bitmap.CompressFormat.PNG, 100, bytes);
// you can create a new file name "test.jpg" in sdcard folder.
String fileName = "";
if (now){
fileName = getDateTime()+"_00"+".png";
}
else {
fileName = time.replace(".txt", ".png");
}
File f = new File(Environment.getExternalStorageDirectory()
+ File.separator + "appName/" + fileName);
f.createNewFile(); // write the bytes in file
FileOutputStream fo = new FileOutputStream(f);
fo.write(bytes.toByteArray());
}
我认为诀窍在于File.separator!