En algunas ocaciones necesite una saber la lista de de archivos que se encontraban dentro de un directorio y subdirectorio y guardarlos en un archivo. asi que implemente una pequeña utileriapara ello.
Requisitos
Creando el proyecto
Creamos un nuevo proyecto Java y agregamos las librerias de iText y POICreamos una nueva clase llamada ExportaTxt dentro de esta crearemos el metodo crearTxt le pasaremos como parametros un List de String y un String con la cadena y el nombre del archivo.
01 public class ExportaTxt { 02 03 public void crearTxt(ArrayList<String> list, String archivo) { 04 FileWriter fichero = null; 05 PrintWriter pw = null; 06 try { 07 fichero = new FileWriter(archivo); 08 pw = new PrintWriter(fichero); 09 for (String string : list) { 10 pw.println(string); 11 } 12 } catch (Exception e) { 13 e.printStackTrace(); 14 } 15 finally { 16 try { 17 if (fichero != null) { 18 fichero.close(); 19 } 20 } catch (Exception e) { 21 e.printStackTrace(); 22 } 23 } 24 } 25 } 26Ahora agregamos la clase exporta excel esta tendra un metodo que crearExcel al cual le pasaremos como parametros una lista de directorios, el nombre del libro y la ruta con el nombre del archivo.
01 public class ExportaExcel { 02 03 public void crearExcel(ArrayList<String> list, String libro, String archivo) { 04 HSSFWorkbook book = new HSSFWorkbook(); 05 HSSFSheet hoja = book.createSheet(libro); 06 HSSFRow fil = hoja.createRow(0); 07 HSSFCell celd = fil.createCell(0); 08 celd.setCellValue("Lista de archivos"); 09 CellStyle stilo = book.createCellStyle(); 10 stilo.setFillForegroundColor(HSSFColor.GREY_50_PERCENT.index); 11 stilo.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND); 12 HSSFFont font = book.createFont(); 13 font.setFontHeightInPoints((short) 12); 14 font.setBoldweight(Font.BOLDWEIGHT_BOLD); 15 stilo.setFont(font); 16 celd.setCellStyle(stilo); 17 for (String lis : list) { 18 HSSFRow fila = hoja.createRow(list.indexOf(lis) + 1); 19 HSSFCell celda = fila.createCell(0); 20 celda.setCellValue(lis); 21 hoja.autoSizeColumn(0); 22 try { 23 FileOutputStream fichero = new FileOutputStream(archivo); 24 book.write(fichero); 25 fichero.close(); 26 } catch (Exception e) { 27 e.printStackTrace(); 28 } 29 } 30 } 31 } 32
ahora creamos la clase ExportaPdf esta clase tendra un metodo llamado crearPdf le pasaremos como parametros la lista de archivos o directorios y la ruta con el nombre del archivo.
01 public class ExportaPdf { 02 03 public void crerPdf(ArrayList<String> list, String archivo) { 04 try { 05 Document document = new Document(); 06 PdfWriter.getInstance(document, new FileOutputStream(archivo)); 07 document.open(); 08 Font font = new Font(); 09 font.setStyle(Font.BOLD); 10 PdfPTable table = new PdfPTable(1); 11 table.setWidths(new int[] {1}); 12 PdfPCell cell; 13 cell = new PdfPCell(new Phrase("lista de archivos", font)); 14 cell.setHorizontalAlignment(Element.ALIGN_CENTER); 15 table.addCell(cell); 16 for (String string : list) { 17 cell = new PdfPCell(new Phrase(string)); 18 cell.setHorizontalAlignment(Element.ALIGN_LEFT); 19 table.addCell(cell); 20 } 21 document.add(table); 22 document.close(); 23 } catch (Exception e) { 24 e.printStackTrace(); 25 } 26 27 } 28 }
Creamos una clase que sera nuestro controlador esta clase contenda un medor que nos retorne una lista de los archivos ,directorios y subdirectorios. ademas se implemetaran tres metodos exportarTxt, exportarExcel y exportarPdf.
01 public class Direc { 02 03 ArrayList lista = new ArrayList<String>(); 04 05 public ArrayList<String> getDir(String directorio) { 06 File file = new File(directorio); 07 File[] dirs = file.listFiles(); 08 for (File file1 : dirs) { 09 lista.add(file1.getName()); 10 if (file1.isDirectory()) { 11 getDir(file1.getAbsolutePath()); 12 } 13 } 14 15 return lista; 16 } 17 18 public void exportarExcel(String dir, String dondeGuardar) { 19 ArrayList<String> list = getDir(dir); 20 ExportaExcel excel = new ExportaExcel(); 21 excel.crearExcel(list, "lista de archivos", dondeGuardar + "/archivos.xls"); 22 } 23 24 public void exportarTxt(String dir, String dondeGuardar) { 25 ArrayList<String> list = getDir(dir); 26 ExportaTxt txt = new ExportaTxt(); 27 txt.crearTxt(list, dondeGuardar + "/archivos.txt"); 28 } 29 30 public void exportarPdf(String dir, String dondeGuardar) { 31 ArrayList<String> list = getDir(dir); 32 ExportaPdf pdf = new ExportaPdf(); 33 pdf.crerPdf(list, dondeGuardar + "/archivos.pdf"); 34 } 35 } 36
y por ultimo implementamos un pequeña interfaz.
y listo.
aqui les dejo el codigo fuente.
0 comentarios:
Publicar un comentario