PDA

Ver la versión completa : Ayuda con Java, ficheros y fechas :S



Sr.Polilla
31/03/2010, 17:46
Hola gente, como se que aquí muchos le dais a Java os cuento:

Estoy haciendo un ejercicio de un examen antiguo de Java, donde tengo que leer ficheros, clasificarlos usando hilos, etc.

Mi problema es que tengo que leer las fechas de creación y última modificación, pero no tengo ni idea.

De momento tengo un array del tipo File, con los ficheros leidos, pero no se sacar las fechas, solo se usar el metodo .getlastmodified() que me devuelve un long.

¿Alguién me puede echar un cable y decirme como leo las fechas y las paso a un formato más comprensible?

Gracias de antecodo :brindis:

Wave
31/03/2010, 17:56
Supongo que con el constructor de Date que le pasas un long obtendras la fecha correcta.

Sr.Polilla
01/04/2010, 00:14
Supongo que con el constructor de Date que le pasas un long obtendras la fecha correcta.

Si en teoría puedo, pero no tengo ni zorra de como, además lo jodido es sacar la fecha de creación. Cuando le preguntamos al profesor nos salta un rollo de setCalendar o algo así, pero nadie de la clase sabe hacerlo, y buscando en internet no lo encuentro (y por desgracia mi.nivel_de_ingles = NULL)

GameMaster
01/04/2010, 00:25
Así rapidito solo podria ayudarte en c# que es parecido, el codigo que te pongo, busca los ficheros de una carpeta, y crea una tabla con sus propriedades, incluido las fechas que dices.

Te aconsejo que busques controles similares para Java, ya es algo :=



// Lê el contenido de la Carpeta
DirectoryInfo DirInfo = new DirectoryInfo(Server.MapPath("MisFicheros\\"));
// Crea la Tabla que va contener la lista de Carpetas del directorio
DataTable fileSystemFolderTable = new DataTable();
// Crea la DataTable que va contener la lista de archivos del directorio
DataTable fileSystemFileTable = new DataTable();
DataTable fileSystemCombinedTable = new DataTable();
// Crea las columnas de la Tabla
DataColumn dcFileType = new DataColumn("Type");
DataColumn dcFileFullName = new DataColumn("FullName");
DataColumn dcFileName = new DataColumn("Name");
DataColumn dcFileCreationTime = new DataColumn("CreationTime");
DataColumn dcFileLastWriteTime = new DataColumn("LastWriteTime");
// Crea las columnas para la carpeta de la Tabla
DataColumn dcFolderType = new DataColumn("Type");
DataColumn dcFolderFullName = new DataColumn("FullName");
DataColumn dcFolderName = new DataColumn("Name");
DataColumn dcFolderCreationTime = new DataColumn("CreationTime");
DataColumn dcFolderLastWriteTime = new DataColumn("LastWriteTime");
// Adiciona las columnas a la Tabla
fileSystemFolderTable.Columns.Add(dcFileType);
fileSystemFolderTable.Columns.Add(dcFileName);
fileSystemFolderTable.Columns.Add(dcFileFullName);
fileSystemFolderTable.Columns.Add(dcFileCreationTi me);
fileSystemFolderTable.Columns.Add(dcFileLastWriteT ime);
fileSystemFileTable.Columns.Add(dcFolderType);
fileSystemFileTable.Columns.Add(dcFolderName);
fileSystemFileTable.Columns.Add(dcFolderFullName);
fileSystemFileTable.Columns.Add(dcFolderCreationTi me);
fileSystemFileTable.Columns.Add(dcFolderLastWriteT ime);
// Inserta en la Tabla los ficheros que existan dentro de la Carpeta seleccionada
// Hacemos loop dentro de cada objeto 'fileinfo' en la carpeta especificada
foreach (FileInfo fi in DirInfo.GetFiles())
{

// Crea una nueva línea en la Tabla de la carpeta
DataRow fileSystemRow = fileSystemFileTable.NewRow();
// Asigna los valores a los miembros de la Tabla
fileSystemRow["Type"] = "File";
fileSystemRow["Name"] = fi.Name;
fileSystemRow["FullName"] = fi.FullName;
fileSystemRow["CreationTime"] = fi.CreationTime;
fileSystemRow["LastWriteTime"] = fi.LastWriteTime;
fileSystemFileTable.Rows.Add(fileSystemRow);
}

^MiSaTo^
01/04/2010, 02:19
Si en teoría puedo, pero no tengo ni zorra de como, además lo jodido es sacar la fecha de creación. Cuando le preguntamos al profesor nos salta un rollo de setCalendar o algo así, pero nadie de la clase sabe hacerlo, y buscando en internet no lo encuentro (y por desgracia mi.nivel_de_ingles = NULL)

En teoría con Java no se puede saber (la clase File tiene el método que tú dices, pero ninguno más relativo a fechas), aunque he encontrado una solución un poco "chapu" aquí: http://www.daniweb.com/forums/thread51670.html#

Aquí también hablan del tema: http://www.jguru.com/faq/view.jsp?EID=1297118

En cualquier caso, si ya tienes el long con la fecha de última modificación, para sacarla simplemente instancia un objeto de la clase Date y pásale el long al constructor.

Date fecha = new Date(aqui_tu_long);

Mira la clase Date para ver cómo sacar esa fecha formateada a tu gusto ;)

Sr.Polilla
01/04/2010, 11:58
Muchísias gracias a todos de verdad :brindis:.

Ojalá siguiera con C#, que es lenguaje que dimos el año pasado, y a Java le tengo una tirria que no os podeis imaginar (ya escribiré un post de desaogo cuando tenga tiempo)

La verdad que si, que el método de las fechas de Misato es un bastante chapu, pero es verdad es que no hay manera. Lo mejor de todo es que mi profesor decía que si se podía con no se que rollo de setCalendar(), en fin, lo mejor de todo es que lo tengo que extrapolar a Linux.

Pues lo dicho, muchas gracias a todos, me habeis quitado un peso de encima :)

^MiSaTo^
01/04/2010, 12:04
Muchísias gracias a todos de verdad :brindis:.

Ojalá siguiera con C#, que es lenguaje que dimos el año pasado, y a Java le tengo una tirria que no os podeis imaginar (ya escribiré un post de desaogo cuando tenga tiempo)

La verdad que si, que el método de las fechas de Misato es un bastante chapu, pero es verdad es que no hay manera. Lo mejor de todo es que mi profesor decía que si se podía con no se que rollo de setCalendar(), en fin, lo mejor de todo es que lo tengo que extrapolar a Linux.

Pues lo dicho, muchas gracias a todos, me habeis quitado un peso de encima :)

En el segundo enlace da una explicación técnica de por qué no se puede ;) Tiene que ver con linux. Y bueno C#, más bien .NET salió de Java así que realmente no se por qué tanta tirria xD

Yo he programado con ambos y prefiero Java, pero vamos eso ya es a gusto personal ;)

SilentSei
01/04/2010, 13:57
Muchísias gracias a todos de verdad :brindis:.

Ojalá siguiera con C#, que es lenguaje que dimos el año pasado, y a Java le tengo una tirria que no os podeis imaginar (ya escribiré un post de desaogo cuando tenga tiempo)

La verdad que si, que el método de las fechas de Misato es un bastante chapu, pero es verdad es que no hay manera. Lo mejor de todo es que mi profesor decía que si se podía con no se que rollo de setCalendar(), en fin, lo mejor de todo es que lo tengo que extrapolar a Linux.

Pues lo dicho, muchas gracias a todos, me habeis quitado un peso de encima :)

Porque la mayoría de los métodos de la clase Date son deprecated (han dejado o dejarán de funcionar en próximas versiones de java). Para trabajar con fechas se usan la clase Calendar (http://java.sun.com/j2se/1.5.0/docs/api/java/util/Calendar.html).