
Al leer y escribir un archivo la salida cambia
Publicado por alejandro (5 intervenciones) el 21/07/2016 11:23:46
Hola, buenos dias.
Estoy intentando leer un archivo(da igual la extension) y volver a escribirlo, pero al hacerlo, el archivo de salida no es el mismo que el de entrada.
Mi codigo es el siguiente:
Si me preguntan que porque paso a bytes y lo imprimo de esa manera, es porque lo que haria en el medio necesita de esa conversion.
Si por otro lado me dice que no puedo cargar una imagen en un string, si que se puede hacer algo parecido, ya que se puede asi:
y no quiero usar esta forma, ya que para archivos muy grandes, supero el tamaño del heap, lo cual no haria al leer linea a linea.
Agradeceria mucho su ayuda.
Un saludo
Estoy intentando leer un archivo(da igual la extension) y volver a escribirlo, pero al hacerlo, el archivo de salida no es el mismo que el de entrada.
Mi codigo es el siguiente:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
OutputStream outputStream = null;
FileReader fr = new FileReader("ruta\\entrada.PNG");
BufferedReader br = new BufferedReader(fr);
String linea;
while ((linea = br.readLine()) != null) {
contenido += linea + "\n";
}
byte[] toBytes= contenido.getBytes();
InputStream inputStream = new ByteArrayInputStream(toBytes);
try {
outputStream = new FileOutputStream(new File("ruta\\salida.PNG"));
int read = 0;
byte[] bytes = new byte[1024];
while ((read = inputStream.read(bytes)) != -1) {
outputStream.write(bytes, 0, read);
}
outputStream.close();
} catch (Exception e) {
e.printStackTrace();
}
inputStream.close();
Si me preguntan que porque paso a bytes y lo imprimo de esa manera, es porque lo que haria en el medio necesita de esa conversion.
Si por otro lado me dice que no puedo cargar una imagen en un string, si que se puede hacer algo parecido, ya que se puede asi:
1
2
3
4
File fil = ~~~~;
FileInputStream fis = null;
fis = new FileInputStream(fil);
byte[] bytess = IOUtils.toByteArray(fis);
y no quiero usar esta forma, ya que para archivos muy grandes, supero el tamaño del heap, lo cual no haria al leer linea a linea.
Agradeceria mucho su ayuda.
Un saludo
Valora esta pregunta


0