studio - manual de programacion android pdf
Escribir una cadena en un archivo. (3)
Al no haber especificado una ruta , su archivo se guardará en el espacio de su aplicación ( /data/data/your.app.name/
).
Por lo tanto, es mejor que guarde su archivo en un almacenamiento externo (que no es necesariamente la tarjeta SD, puede ser el almacenamiento predeterminado).
Es posible que desee profundizar en el tema, leyendo los documentos oficiales
En síntesis:
Agrega este permiso a tu Manifiesto:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
Incluye el permiso LEER, por lo que no es necesario especificarlo también.
Guarde el archivo en una ubicación que especifique (esto se toma de mi código en vivo, así que estoy seguro de que funciona):
public void writeToFile(String data)
{
// Get the directory for the user''s public pictures directory.
final File path =
Environment.getExternalStoragePublicDirectory
(
//Environment.DIRECTORY_PICTURES
Environment.DIRECTORY_DCIM + "/YourFolder/"
);
// Make sure the path directory exists.
if(!path.exists())
{
// Make it, if it doesn''t exit
path.mkdirs();
}
final File file = new File(path, "config.txt");
// Save your stream, don''t forget to flush() it before closing it.
try
{
file.createNewFile();
FileOutputStream fOut = new FileOutputStream(file);
OutputStreamWriter myOutWriter = new OutputStreamWriter(fOut);
myOutWriter.append(data);
myOutWriter.close();
fOut.flush();
fOut.close();
}
catch (IOException e)
{
Log.e("Exception", "File write failed: " + e.toString());
}
}
[EDITAR] OK Intente de esta manera (ruta diferente - una carpeta en el almacenamiento externo):
String path =
Environment.getExternalStorageDirectory() + File.separator + "yourFolder";
// Create the folder.
File folder = new File(path);
folder.mkdirs();
// Create the file.
File file = new File(folder, "config.txt");
Quiero escribir algo en un archivo. Encontré este código:
private void writeToFile(String data) {
try {
OutputStreamWriter outputStreamWriter = new OutputStreamWriter(context.openFileOutput("config.txt", Context.MODE_PRIVATE));
outputStreamWriter.write(data);
outputStreamWriter.close();
}
catch (IOException e) {
Log.e("Exception", "File write failed: " + e.toString());
}
}
El código parece muy lógico, pero no puedo encontrar el archivo config.txt en mi teléfono.
¿Cómo puedo recuperar ese archivo que incluye la cadena?
Escribe un archivo de texto simplificado:
private void writeToFile(String content) {
try {
File file = new File(Environment.getExternalStorageDirectory() + "/test.txt");
if (!file.exists()) {
file.createNewFile();
}
FileWriter writer = new FileWriter(file);
writer.append(content);
writer.flush();
writer.close();
} catch (IOException e) {
}
}
Este método toma el nombre del archivo y la cadena de datos como entrada y los descarga en una carpeta en la tarjeta SD. Puede cambiar el nombre de la carpeta si lo desea.
El tipo de retorno es booleano dependiendo del éxito o el fracaso de FileOperation.
Nota importante: intente hacerlo en Async Task, ya que FIle IO causa ANR en el subproceso principal.
public boolean writeToFile(String dataToWrite, String fileName) {
String directoryPath =
Environment.getExternalStorageDirectory()
+ File.separator
+ "LOGS"
+ File.separator;
Log.d(TAG, "Dumping " + fileName +" At : "+directoryPath);
// Create the fileDirectory.
File fileDirectory = new File(directoryPath);
// Make sure the directoryPath directory exists.
if (!fileDirectory.exists()) {
// Make it, if it doesn''t exist
if (fileDirectory.mkdirs()) {
// Created DIR
Log.i(TAG, "Log Directory Created Trying to Dump Logs");
} else {
// FAILED
Log.e(TAG, "Error: Failed to Create Log Directory");
return false;
}
} else {
Log.i(TAG, "Log Directory Exist Trying to Dump Logs");
}
try {
// Create FIle Objec which I need to write
File fileToWrite = new File(directoryPath, fileName + ".txt");
// ry to create FIle on card
if (fileToWrite.createNewFile()) {
//Create a stream to file path
FileOutputStream outPutStream = new FileOutputStream(fileToWrite);
//Create Writer to write STream to file Path
OutputStreamWriter outPutStreamWriter = new OutputStreamWriter(outPutStream);
// Stream Byte Data to the file
outPutStreamWriter.append(dataToWrite);
//Close Writer
outPutStreamWriter.close();
//Clear Stream
outPutStream.flush();
//Terminate STream
outPutStream.close();
return true;
} else {
Log.e(TAG, "Error: Failed to Create Log File");
return false;
}
} catch (IOException e) {
Log.e("Exception", "Error: File write failed: " + e.toString());
e.fillInStackTrace();
return false;
}
}