如何将文件写入Android上内部存储的文件夹?

She*_*ero 6 android file internal-storage

我编写了一个创建文件并将数据写入文件并存储在内部存储中的方法.当我得到文件的绝对路径或路径[我已添加日志消息来试验文件上的操作]时,它显示该文件是在根目录下创建的,它位于/ data/data/mypackagename下/files/filename.txt.不过,我可以在DDMS上找到这些文件夹,在那里我可以找到由我编写的方法创建的文件.但我也无法打开该文件,因为我没有权限.

当我查看我的Android设备时,我找不到这些目录.我查看了堆栈溢出,有些人回答说内部存储中的/ data/data文件夹是隐藏的,要访问它们我必须根据我不想做的设备.

下一步方法:Android设备上有一个名为MyFiles的文件夹[我正在使用运行Android 4.4进行测试的Galaxy Tab 4].在此文件夹下有设备存储目录,其中包含各种文件夹,如文档,图片,音乐,铃声,Android等等.因此,相机,电子表格应用等应用程序可以将图片写入或保存到图片文件夹中或文件夹中的txt文件.同样,如何将我在函数中创建的文件写入Documents文件夹或可通过设备访问的任何其他文件夹.请帮助我怎么做,任何帮助表示赞赏.

以下是我写的代码:

public void addLog(String power_level){
// creates a logFile in the root directory of the internal storage of the application.
// If the file does not exists, then it is created.
Log.d("AppendPower", "In addLog method");
//File logFile = new File(((Context)this).getFilesDir(), "logFile.txt");
File logFile = new File(getFilesDir(), "logFile.txt");
Log.d("FilesDir Path", getFilesDir().getAbsolutePath());
Log.d("FilesDir Name", getFilesDir().getName());
Log.d("Path on Android", logFile.getPath());
Log.d("Absolute Path on Android", logFile.getAbsolutePath());
Log.d("Parent", logFile.getParent());
if(!logFile.exists()){
    try{
        logFile.createNewFile();
    }catch(IOException io){
        io.printStackTrace();
    }
}
try{
    BufferedWriter writer = new BufferedWriter(new FileWriter(logFile, true));
    writer.write("Battery level reading");
    writer.append(power_level);
    Log.d("Power_Level in try", power_level);
    writer.newLine();
    writer.close();
}catch(IOException e){
    e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)

}

har*_*ura 7

正如您已经想到在Android中写入目录是不可能的,除非您根设备.这就是为什么甚至Play商店中的一些应用程序在安装应用程序之前要求root权限.生根将使您的保修失效,因此如果您没有严格要求,我不建议您这样做.

除了根目录,您可以访问Android文件管理器中可见的任何文件夹.

下面是你如何用一些数据写入sd - 取自:https://stackoverflow.com/a/8152217/830719

使用这些代码,您可以在SDCard中编写文本文件,同时需要在android清单中设置权限

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
Run Code Online (Sandbox Code Playgroud)

这是代码:

public void generateNoteOnSD(String sFileName, String sBody){
    try
    {
        File root = new File(Environment.getExternalStorageDirectory(), "Notes");
        if (!root.exists()) {
            root.mkdirs();
        }
        File gpxfile = new File(root, sFileName);
        FileWriter writer = new FileWriter(gpxfile);
        writer.append(sBody);
        writer.flush();
        writer.close();
        Toast.makeText(this, "Saved", Toast.LENGTH_SHORT).show();
    }
    catch(IOException e)
    {
         e.printStackTrace();
         importError = e.getMessage();
         iError();
    }
   }  
Run Code Online (Sandbox Code Playgroud)

.