Estoy tratando de guardar un archivo .txt en el directorio raíz de Android Mobile usando phonegap. He instalado estos complementos 'cordova-plugin-file' y 'cordova-plugin-file-transfer'. En el archivo config.xml agrego esta preferencia.

<preference name="AndroidPersistentFileLocation" value="Internal" />

Aquí está mi código.

<button class="btn-lg btn-success" onclick="saveFile('hello_world.txt', 'This is Dummy Content')">Write File</button>

Código para manejar en evento de clic.

function saveFile(fileName, fileData) {
    // Get access to the file system
    window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function (fileSystem) {
        // Create the file.
        fileSystem.root.getFile(fileName, {create: true, exclusive: false}, function (entry) {
            // After you save the file, you can access it with this URL
            var myFileUrl = entry.toURL()
            entry.createWriter(function (writer) {
                writer.onwriteend = function (evt) {
                    alert("Successfully saved file to " + myFileUrl)
                }
                // Write to the file
                writer.write(fileData)
            }, function (error) {
                alert("Error: Could not create file writer, " + error.code)
            })
        }, function (error) {
            alert("Error: Could not create file, " + error.code)
        })
    }, function (evt) {
        alert("Error: Could not access file system, " + evt.target.error.code)
    })
}

Después de una devolución de llamada exitosa, devuelve esta ubicación de archivo.

file:///data/data/com.adobe.phonegap.app/files/files/hello_world.txt

Pero cuando trato de encontrar este archivo en una ubicación determinada. No está ahí. Quiero este archivo en mi directorio raíz de dispositivos móviles.

4
Owais Kiani 5 ene. 2017 a las 10:33

4 respuestas

La mejor respuesta

Consulte este enlace que contiene la muestra de trabajo.

El enlace contiene una aplicación de muestra de cordova para descargar, guardar y abrir archivos. Admite la opción de eliminación de carpetas también.

Echa un vistazo a la sección Léame. Espero eso ayude. También puede consultar esta SO Post para obtener más información al respecto.

2
Community 23 may. 2017 a las 11:53

Sin rootear o usar el permiso de root, no puede escribir en el directorio raíz del dispositivo. Tal vez quieras escribir en la tarjeta SD. En ese caso, escriba en / sdcard / que debería ser posible cuando configure los permisos correctos.

Si desea acceder a los datos de su aplicación local, puede ejecutar este comando aquí:

adb shell run-as com.adobe.phonegap.app ls -laR

Sin embargo, normalmente no puede buscar directorios dentro de / data / data

2
rekire 5 ene. 2017 a las 07:35
String path = this.getApplicationContext().getFilesDir() + "/testDir/";
File file = new File(path);
file.mkdirs();
path += "testlab.txt";
OutputStream myOutput;
try {
myOutput = new BufferedOutputStream(new FileOutputStream(path,true));
write(myOutput, new String("TEST").getBytes());
myOutput.flush();
myOutput.close();
} catch (FileNotFoundException e) {
    e.printStackTrace();
} catch (IOException e) {
    e.printStackTrace();
}
-2
Amado 5 ene. 2017 a las 07:35

Normalmente uso 1 de las dos opciones para guardar el archivo, guardarlo en el directorio de inicio del almacenamiento interno o en el directorio de inicio de mi aplicación.

Opción 1:

String directory = Environment.getExternalStorageDirectory().getAbsolutePath();
/* it will give you home directory of internal storage like this /storage/emulated/0*/ 


String directory = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM).getAbsolutePath();
/* it will give DCIM folder directory /storage/emulated/0/DCIM */

String directory = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES).getAbsolutePath();
/* it gives /storage/emulated/0/Pictures */

Opción2: o puede usar el directorio de su aplicación donde el usuario móvil no puede ver estos archivos a continuación es el código para esto

ContextWrapper wrapper = new ContextWrapper(this);
String directory = wrapper.getDir("MyTempFolder", ContextWrapper.MODE_PRIVATE).toString();
/*directory will be of /data/data/com.your_domain_name.your_project_name/app_MyTempFolder*/

Y para guardar el uso del archivo debajo del código

File myFile = new File(directory, "MyFile.txt");
if(!myFile.exists())
    myFile.createNewFile();

Y si quieres escribir algunos datos en ese archivo

FileWriter writer = new FileWriter(myFile);
writer.write("this is my first line in the file");
writer.close();
0
Nadimuddin 17 ene. 2017 a las 07:16