Tag: file
Transfiriendo archivos usando Java de la forma incorrecta
by egyware on Abr.12, 2011, under Escritorio Remoto, General, Ideas Locas, Java
Hoy en día les mostrare como transferir archivos en java de la forma incorrecta.
La razón de este artículo es que un amigo me pidió ayuda de cómo transferir archivos a pesar que le dije como hacerlo, no logró hacerlo de la manera correcta(hasta donde yo se). Y por asuntos didácticos dividiré este artículos en dos partes (transfiriendo archivos de manera incorrecta y correcta).
El siguiente código que les mostraré como transferir el archivo de la forma incorrecta, espero que al leerlo se de cuenta de cual es el error.
Primero debemos crear el servidor, primero el código para aceptar una simple conexión
ServerSocket server = new ServerSocket(1234); Socket conexion = server.accept();
Básicamente lo que hacemos es crear un ServerSocket el cual se pone a la escucha en el puerto 1234 (un numero cualquiera pero debe ser superior a 1024). La siguiente linea lo que hace es esperar una conexión (esta función se bloquea hasta que alguien se conecte al puerto abierto) y devolverá un objeto Socket el cual manejará la conexión.
Luego debemos enviar el archivo (de la manera mala)
File transfer = new File("~/archivo pequeño.doc");
FileInputStream fin = new FileInputStream(transfer);
byte datos[] = new byte[fin.available()]; ///noten esto
fin.read(datos);
OutputStream out = conexion.getOutputStream();
out.write(datos);
out.flush();
out.close();
conexion.close();
Básicamente hemos transferido nuestro archivo de mala manera, pero también nos falta recibir nuestro archivo también de mala manera
Socket descargar = new Socket("localhost",1234);
InputStream in = descargar.getInputStream();
byte descarga[] = new bytes[in.avalaible()]; //noten esto
in.read(descarga);
FileOutputStream fout = new FileOutputStream(new File("~/archivo transferido.doc"));
fout.write(descarga);
descargar.close();
En las partes que les mencione en el código (noten esto) se darán cuenta que nuestro programa puede quedarse sin memoria al tratar de transferir un archivo muy grande.
Bueno espero que tengán deduzcan la forma correcta de transferir archivos antes que yo la postee, Saludos!!
Nota:Avisar si hay algún error, hice a la rapida este articulo :S
Programando un explorador de archivos simple
by egyware on Mar.27, 2010, under Escritorio Remoto, Ideas Locas, Java
Hoy en dia mostrare algunas cuantas funciones para mostrar los archivos a esto lo llamaremos una Herramienta para nuestro escritorio remoto a futuro estas herramientas en nuestro escritorio remoto seran como un plugin ahora solo mostrare de manera sencilla como mostrar archivos y directorios por ahora de tu computador personal de manera muy local.
Para esto solo usaremos las clases File para acceder a los archivos y directorios y PrintStream para mostrar algo en pantalla.
-Importacion del codigo
package egyware.sample; import java.io.File; import java.io.PrintStream;
-Creación de la clase
public class FileExplorer {
//Preparamos
public static File roots[] = File.listRoots();
/**
* @param args
*/
public static void main(String[] args) {
showDir(System.out,null);
showDir(System.out,"/");
//showDir(System.out,"c:\");
}
-Implementación de la función que muestra los archivos y directorios
public static void showDir(PrintStream out,String dir){
if(out==null)
return;
File files[] = null;
out.print('>');
if(dir == null){
out.println("roots:");
files = roots;
}
else{
File f = new File(dir);
if(f.isFile()){
out.println("es un archivo");
return;
}
out.println(f.getPath()+":");
files = f.listFiles();
}
for(int i=0;i<files.length;i++){
String name = files[i].getName();
//Parche para el root en linux
if(name.length()>0)
out.println(name);
else
out.println(files[i].getAbsoluteFile());
}
}
}
Es posible que no lo hayan notado, pero aqui las funciones mas importantes son:
File.listRoots()
new File(dir).listFiles()
La primera función estatica nos devuelve un arreglo de la lista de Roots, en linux nos devuelve solo “/” pero en windows nos devuelve las unidades conectadas al pc “c:”,”d:”,…
La segunda función de objeto nos devuelve el contenido del “dir“, siempre y cuando “dir” sea un directorio si no es asi devolvera null, por eso la comprobacion en la linea 12 de la implementación de la función.
Además en la linea 21 de la implementación de la función puse un parche para el root de linux, ahora ¿por qué? porque la funcion getName cuando pido el nombre de “/” no devuelve nada (esto no es un error, es que no tiene nombre simplemente).
Bueno eso es todo.










