Foro de elhacker.net

Programación => Java => Mensaje iniciado por: Beginner Web en 14 Noviembre 2019, 23:12 pm



Título: guardar un archivo en java
Publicado por: Beginner Web en 14 Noviembre 2019, 23:12 pm
Buenas quiero guardar un archivo excl , me sale que se guardó con exito pero nada , ayuda :(

Código
  1. public class ArchivoExcel {
  2.  
  3. private static String path = "C:\\Users\\Yuna\\compra.xls";
  4.  
  5. public static void main(String[] args) {
  6.  
  7.        HSSFWorkbook workbook = new HSSFWorkbook();
  8.  
  9.        HSSFSheet primeraHoja = workbook.createSheet("Primera hoja en blanco");
  10. ..
  11.        HSSFRow rowA = primeraHoja.createRow(0);
  12.        HSSFCell cellA = rowA.createCell(0);
  13.        cellA.setCellValue(new HSSFRichTextString("PRIMER HOJA"));
  14.  
  15.        try {
  16.         FileOutputStream salida = new FileOutputStream(path);  
  17.            workbook.write(salida);
  18.            salida.close();
  19.            System.out.println("venta.xlsx guardado con exito!");
  20.        } catch (IOException e) {
  21.            System.out.println(e.getMessage());
  22.        }
  23.    }
  24.  
  25. }


Título: Re: guardar un archivo en java
Publicado por: @XSStringManolo en 14 Noviembre 2019, 23:49 pm
Creo que fileoutputstream manda un stream de datos a un archivo. Archivo que en tu lugar no existe porque no lo creas.

Prueba así:
Código
  1. File archivoCompraExcel = new File("C:\\Users\\Yuna\\compra.xls");
  2. FileOutputStream Salida = new FileOutputStream(archivoCompraExcel);

Creo que tu código funciona si existe el archivo en la ruta, si fileoutputstream acepta rutas como parámetros que creo que sí que acepta tanto rutas como objetos.



Título: Re: guardar un archivo en java
Publicado por: Beginner Web en 15 Noviembre 2019, 00:34 am
uhhh ya me estaba volviendo loca

Código
  1. try {    
  2.         File archivoExcel = new File("ruta/existente");
  3.         FileOutputStream Salida = new FileOutputStream(archivoExcel);
  4. workbook.write(Salida);
  5. Salida.close();
  6. System.out.println("Guardado con exito!");
  7.        } catch (IOException e) {
  8.            System.out.println(e.getMessage());
  9.        }

Gracias cuanto le debo?  ;-)


Título: Re: guardar un archivo en java
Publicado por: rub'n en 15 Noviembre 2019, 00:52 am
Muy bien por los dos lo lograron, pero lo correcto es que usen el Try - with resources, y no les haria falta invocar el .close, o sea, cerrar el flujo

Esa ruta la pueden obtener mejor con un JFileChooser en runtime es lo mas correcto, y no tendrán necesidad de escribir el String con la ruta, es un fastidio.

Ejemplo https://foro.elhacker.net/java/jfilechooser_guardar_un_archivo_con_nombre_preterminado-t489899.0.html

Dulce chavalina, creo que no lo buscaste la otra ves. LMAO.


Título: Re: guardar un archivo en java
Publicado por: @XSStringManolo en 15 Noviembre 2019, 02:06 am
Yo por el programa entendí que quiere crear un archivo que no existe en una ruta. Entonces no puede obtener de algo que aún no creó.

Lo que comentas de resources como va? Normalmente cierro los flujos a mano con .close para no malgastar recursos.


Título: Re: guardar un archivo en java
Publicado por: rub'n en 15 Noviembre 2019, 07:59 am
Yo por el programa entendí que quiere crear un archivo que no existe en una ruta. Entonces no puede obtener de algo que aún no creó.

Lo que comentas de resources como va? Normalmente cierro los flujos a mano con .close para no malgastar recursos.

En el ejemplo que puse hace todo, si no existe el fichero lo único que tienes que hacer es darle un nombre para poder ser escrito.

En la línea 23, cuando se obtiene el path con el JFileChooser se le concatena el nombre del archivo y listo.

Y en la línea 25 se usa el try- with resources


Título: Re: guardar un archivo en java
Publicado por: @XSStringManolo en 15 Noviembre 2019, 14:23 pm
Aquí está bien explicado: https://picodotdev.github.io/blog-bitix/2018/04/la-sentencia-try-with-resources-de-java/


Título: Re: guardar un archivo en java
Publicado por: MetaNoia en 25 Noviembre 2019, 13:10 pm
Otra opción seria  comprobar si el fichero existe o no y en caso de que no exista lo creas, así no tienes que estar pendiente de si esta creado.
Código:
        File fichero = new File("fichero.xls");
        if(!fichero.exists())
        {
            try
            {
                fichero.createNewFile();
            }
            catch (IOException ex)
            {
                System.out.println(ex.getMessage());
            }
        }