我似乎无法弄清楚如何通过Android应用程序创建目录/文件到内部存储。我有以下代码:
public class Environment extends SurfaceView implements SurfaceHolder.Callback {
public static String FILE_PATH;
//other unimportant variables
public Environment(Conext context) {
super(context);
FILE_PATH = context.getFilesDir() + "/My Dir/";
File customDir = new File(FILE_PATH);
if(!customDir.exists())
System.out.println("created my dir: " + customDir.mkdir());
File test = new File(FILE_PATH + "testFile.txt");
try {
if(!test.exists())
System.out.println("created test: " + test.createNewFile());
} catch(Exception e) {
e.printStackTrace();
}
//other unimportant stuff
}
}
然后我使用ES文件资源管理器来查看它是否创建了该文件,并且我没有在任何地方看到目录/文件,尽管它打印出来" true"用于System.out.println()调用。
我做错了什么?
答案 0 :(得分:1)
您创建文件的路径位于应用私有位置。通常,您无法从外部访问它。它实际上是在apps数据文件夹中创建的。但是看起来你想写在外部文件夹中。 要在外部存储中写入,您必须在清单文件中请求WRITE_EXTERNAL_STORAGE权限:
<manifest ...>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
...
</manifest>
代码:
String folder_main = "My Dir";
File f = new File(Environment.getExternalStorageDirectory(), folder_main);
if (!f.exists()) {
f.mkdirs();
}
File test = new File(f , "testFile.txt");
在这里,您将了解如何在外部存储中创建文件夹/文件。
答案 1 :(得分:0)
您可以尝试使用以下内容:
ContextWrapper contextWrapper = new ContextWrapper(getApplicationContext());
File directory = contextWrapper.getDir(getFilesDir().getName(), Context.MODE_PRIVATE);
File file = new File(directory,”fileName”);
String data = “TEST DATA”;
FileOutputStream fos = new FileOutputStream(“fileName”, true); // save
fos.write(data.getBytes());
fos.close();
这将在Device的内部存储中写入文件(/data/user/0/com.yourapp /)
希望这有帮助!