Crear un objeto de archivo en memoria a partir de una cadena en Java
Tengo una función que acepta File como argumento. No quiero crear / escribir un nuevo archivo (no tengo acceso de escritura al sistema de archivos) para pasar mis datos de cadena a la función. Debo agregar que los datos de cadena no existen en un archivo (por lo que no puedo leer mis datos de un archivo).
¿Puedo usar Secuencias y "enviarlas" a objetos de archivo?
5 answers
No; las instancias de la clase File
representan una ruta en un sistema de archivos. Por lo tanto, puede usar esa función solo con un archivo. Pero tal vez hay una sobrecarga que toma un InputStream
en su lugar?
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-08-16 19:20:05
Por lo general, cuando un método acepta un archivo, hay otro método cercano que acepta una secuencia. Si este no es el caso, la API está mal codificada. De lo contrario, puede utilizar archivos temporales, donde el permiso se concede generalmente en muchos casos. Si es un applet, puede solicitar permiso de escritura.
Un ejemplo:
try {
// Create temp file.
File temp = File.createTempFile("pattern", ".suffix");
// Delete temp file when program exits.
temp.deleteOnExit();
// Write to temp file
BufferedWriter out = new BufferedWriter(new FileWriter(temp));
out.write("aString");
out.close();
} catch (IOException e) {
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:34:39
Un objeto File en Java es una representación de una ruta a un directorio o archivo, no el archivo en sí. No necesita tener acceso de escritura al sistema de archivos para crear un objeto File
, solo lo necesita si tiene la intención de escribir realmente en el archivo (usando un FileOutputStream por ejemplo)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-08-16 19:17:58
La clase File
representa la "idea" de un archivo, no un identificador real para usar para E/S. Esta es la razón por la cual la clase File
tiene un método .exists()
, para decirle si el archivo existe o no. (¿Cómo puede tener un objeto File
que no existe?)
Por el contrario, construir un new FileInputStream(new File("/my/file"))
le da un flujo real para leer bytes.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-08-16 19:17:59
FileReader r = new FileReader(file);
Use un lector de archivos cargue el archivo y luego escriba su contenido en un búfer de cadena.
El enlace anterior le muestra un ejemplo de cómo lograr esto. Como otros post a esta respuesta dicen para cargar un archivo en la memoria que no necesita acceso de escritura, siempre y cuando no planea hacer cambios en el archivo real.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-08-16 19:24:32