我已经研究了以下链接,但它没有回答我的问题。 http://developer.android.com/guide/topics/data/data-storage.html#filesInternal
如果标题中的问题答案是肯定的。有人可以 请提供一个创建子文件夹和添加文件的简单示例 到那个文件夹?并且可能会显示如何从中读取文件 子文件夹?
或者也许告诉我为什么下面的例子悲惨地失败
将 file.mkdirs(); 更改为 file.getParentFile()后,立即开始工作.mkdirs();
请参阅以下答案中的说明
public static void Test(String path, String fileName, String fileStr, Context ctx)
{
SaveFile(path, fileName, fileStr, ctx);
String returnFileStr = ReadFile(path, fileName, ctx);
}
public static Boolean pathExists(String path, Context ctx)
{
Boolean result = false;
String[] pathSeqments = path.split("/");
String pathStr = "";
for(int i = 0;i<pathSeqments.length;i++ )
{
pathStr += pathSeqments[i];
if(!new File(ctx.getFilesDir() +"/" + pathStr).exists())
{
result = false;
break;
}
pathStr += "/";
result = true;
}
return result;
}
public static void SaveFile(String path, String fileName, String fileStr, Context ctx) {
try {
File file = new File(ctx.getFilesDir() +"/" + path, fileName); //new File(ctx.getFilesDir() +"/" + path + "/" + fileName);
file.getParentFile().mkdirs();
FileOutputStream fOut = new FileOutputStream(file);
OutputStreamWriter osw = new OutputStreamWriter(fOut);
osw.write(fileStr);
osw.flush();
osw.close();
} catch (IOException ioe) {
ioe.printStackTrace();
}
}
public static String ReadFile(String path, String fileName, Context ctx) {
String fileStr = null;
try {
if(pathExists(path, ctx))
{
File file = new File(ctx.getFilesDir() +"/" + path, fileName);
FileInputStream fIn = new FileInputStream(file);
StringWriter writer = new StringWriter();
IOUtils.copy(fIn, writer, "UTF-8");
fileStr = writer.toString();
}
} catch (IOException ioe) {
ioe.printStackTrace();
}
return fileStr;
}
答案 0 :(得分:6)
是否可以使用内部存储
创建和维护包含文件的文件夹结构
是的,使用标准Java I / O.
或者也许告诉我为什么下面的例子悲惨地失败
才华横溢的程序员知道如何描述症状,而不是使用像“悲惨失败”这样毫无意义的短语。
话虽如此,file.mkdirs();
创建了一个目录。然后尝试打开该目录,就像它是一个文件一样,用于向其写入数据。这对我所知道的任何操作系统都不起作用,当然也不适用于Android。请拨打mkdirs()
关于将创建文件父目录的内容(例如file.getParentFile().mkdirs()
)。
此外,永远不要使用连接来创建File
对象。使用正确的File
构造函数。