03/03/2008, 20:55
|
| | | Fecha de Ingreso: enero-2008 Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 17 años Puntos: 260 | |
Re: Problemas con un listado en java Mmmm.... ok
Código:
/**
* Copia un fichero con un nuevo nombre
* @param source fichero origen
* @throws java.lang.Exception si ocurre un error de lectura o escritura
*/
public static void copyFile(File source) throws Exception {
String strNewName = source.getParent() + "/MTL" +
source.getName().substring(5, 10) + ".DAT";
/**
* BufferedInputStream/BufferedOutputStream : para caracteres
* BufferedReader/BufferedWriter : para strings
*/
BufferedReader in = new BufferedReader(new FileReader(source));
BufferedWriter out = new BufferedWriter(new FileWriter(strNewName));
/**
* Lee una linea por adelantado y la descarta.
*/
String s = in.readLine();
if (s != null) {
while ((s = in.readLine()) != null) {
/**
* Da formato a la linea leida y la escribe en la salida.
*/
out.write(plstbuilder(s));
}
}
out.close();
in.close();
}
Una aplicación de ejemplo:
Código:
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileFilter;
import java.io.FileReader;
import java.io.FileWriter;
public class Ejemplo extends Thread {
private boolean running = true;
public Ejemplo() {
}
public void run() {
String strFilter = "b0";
String strFile = "/home/hackmanc/Desktop";
while (running) {
nameFilter filter = new nameFilter(strFilter);
findFiles(new File(strFile), filter);
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
running = false;
}
}
}
public static void main(String[] args) {
new Ejemplo().start();
}
/**
* Recoge todos los archivos del directorio que cumplan con la condición
* @param file archivo inicial recursivo
* @param filter filtro de nombres de archivo
*/
public static void findFiles(File file, FileFilter filter) {
if (file.isDirectory()) {
File[] list = file.listFiles(filter);
for (int i = 0; i < list.length; i++) {
findFiles(list[i], filter);
}
} else {
try {
copyFile(file);
file.delete(); // BORRA EL ARCHIVO O INTENTA BORRARLO
System.out.println("Copiado exitósamente : " + file.getPath());
} catch (Exception e) {
System.out.println("Error en copia : " + file.getPath());
}
}
}
/**
* Copia un fichero con un nuevo nombre
* @param source fichero origen
* @throws java.lang.Exception si ocurre un error de lectura o escritura
*/
public static void copyFile(File source) throws Exception {
String strNewName = source.getParent() + "/MTL" +
source.getName().substring(5, 10) + ".DAT";
/**
* BufferedInputStream/BufferedOutputStream : para caracteres
* BufferedReader/BufferedWriter : para strings
*/
BufferedReader in = new BufferedReader(new FileReader(source));
BufferedWriter out = new BufferedWriter(new FileWriter(strNewName));
/**
* Lee una linea por adelantado y la descarta.
*/
String s = in.readLine();
if (s != null) {
while ((s = in.readLine()) != null) {
/**
* Da formato a la linea leida y la escribe en la salida.
*/
out.write(plstbuilder(s));
}
}
out.close();
in.close();
}
/**
* Da formato a str
* @param str la cadena a dar formato
* @return la cadena original con un nuevo formato
*/
public static String plstbuilder(String str) {
String plstrow = null;
String plu, depto, precio, tipo, t, cad, desc, walo;
plu = str.substring(12, 16);
depto = str.substring(17, 20);
precio = str.substring(33, 39);
t = str.substring(39, 46);
if (t.equals("0000000")) {
tipo = "0";
} else {
tipo = "1";
}
cad = str.substring(54, 55);
desc = str.substring(174, 192);
walo = "0";
plstrow = plu + depto + walo + tipo + cad + desc + precio;
return plstrow;
}
private class nameFilter implements FileFilter {
private String mask;
nameFilter(String mask) {
this.mask = mask;
}
public boolean accept(File file) {
return file.getName().startsWith(mask);
}
}
}
Cita: Por principio de cuentas quisiera agregar que no utilizó ninguna herramienta grafica para programar como el netbeans o eclipse, lo hago todo con el notepad. Sabias que son gratis ?
Saludos,
Última edición por HackmanC; 03/03/2008 a las 20:57
Razón: delete()
|