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 String no existen en un archivo (por lo que no puedo leer mis datos de un archivo).
¿Puedo utilizar Streams y "convertirlos" en objetos File?
File
objeto? Como han indicado las respuestas, unFile
objeto es como una referencia a una ubicación en el sistema de archivos, por lo que sería difícil de simular sin un archivo real. Sin embargo, si su función tomó aFileReader
o aFileInputStream
, podría modificar fácilmente el código para aceptar entradas que no sean de archivos.Respuestas:
No; Las instancias de 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 unaInputStream
en su lugar?fuente
Por lo general, cuando un método acepta un archivo, hay otro método cercano que acepta una transmisión. Si este no es el caso, la API está mal codificada. De lo contrario, puede usar archivos temporales, donde generalmente se otorga permiso en muchos casos. Si es un subprograma, puede solicitar permiso de escritura .
Un ejemplo:
fuente
Un objeto Archivo 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
File
objeto, solo lo necesita si realmente desea escribir en el archivo (usando un FileOutputStream por ejemplo)fuente
La
File
clase representa la "idea" de un archivo, no un identificador real para usar en E / S. Es por eso que laFile
clase tiene un.exists()
método para decirte si el archivo existe o no. (¿Cómo puedes tener unFile
objeto que no existe?)Por el contrario, la construcción de un
new FileInputStream(new File("/my/file"))
le da una secuencia real para leer bytes.fuente
Utilice un lector de archivos para cargar el archivo y luego escribir su contenido en un búfer de cadena.
ejemplo
El enlace de arriba le muestra un ejemplo de cómo lograr esto. Como otra publicación de esta respuesta dice que debe cargar un archivo en la memoria, no necesita acceso de escritura siempre que no planee realizar cambios en el archivo real.
fuente