Acerca de la transferencia de archivos usando JAVA SOCKET
Transferencia de archivos punto a punto
/*
importar java.io.*;
importar java.net.* ;
importar java.util.*;
*/
conexión HttpURLConnection privada;//conexión de almacenamiento
private int downsize = -1;/ /Tamaño del archivo de descarga, el valor inicial es -1
private int downed = 0; //Tamaño descargado de Wenjia, el valor inicial es 0
archivo guardado privado RandomAccessFile;// registrar descarga Archivo de almacenamiento de información
URL privada fileurl;//Registra la dirección del archivo que se descargará
private DataInputStream fileStream;//Registra el flujo de datos descargados
try{
/*Comience a crear el archivo de almacenamiento descargado e inicialice el valor*/
Archivo tempfileobject = new File("h:\\webwork-2.1.7.zip ");
p>
if(!tempfileobject.exists()){
/*Crea el archivo si no existe*/
tempfileobject.createNewFile();
}
savefile = new RandomAccessFile(tempfileobject,"rw");
/*Establecer conexión*/
fileurl = nueva URL("/files/documents/693/9723/webwork-2.1.7.zip");
conexión = (HttpURLConnection)fileurl.openConnection(); >
conexión.setRequestProperty("Range"," byte="+this.downed+"-");
this.downsize = conexión.getContentLength();
/ /System.out.println(connection.getContentLength())
new Thread(this).start()
}
catch(Exception e); ){
System.out. println(e.toString());
System.out.println("Error del generador"); exit(0);
}
public void run(){
/*Comienza a descargar el archivo. La siguiente prueba no reanuda la descarga. hay un problema con el archivo descargado*/
intente {
System.out.println("begin!"
Fecha de inicio);
hora = nueva fecha();
comenzartime.setTime(nueva fecha().getTime());
byte[] filebyte
int onecelen;
//System.out.println(this.connection.getInputStream().getClass().getName()
this.fileStream = new DataInputStream(
);new BufferedInputStream(
this.connection.getInputStream()));
System.out.println("size = " + this.downsize
);while(this.downsize != this.downed){
if(this.downsize - this.downed > 262144){//Establece el caché a un máximo de 256 KB
filebyte = nuevo byte[262144];
onecelen = 262144;
}
else{
filebyte = nuevo byte[ this.downsize - this.downed];
onecelen = this.downsize - this.downed
}
onecelen = this.fileStream.read(filebyte; ,0 ,onecelen);
this.savefile.write(filebyte,0,onecelen
this.downed += onecelen
System.out); .println (this.downed);
}
this.savefile.close();
System.out.println("¡fin!");
p>
System.out.println(begintime.getTime());
System.out.println(new Date().getTime()); p>
System.out.println(begintime.getTime() - nueva fecha().getTime());
}
catch(Exception e){ p>
System.out.println(e.toString());
System.out.println("¡Hay un problema con el método run()!");
}
}
/***
//FileClient.java
importar java.io.*;
importar java.net.*;
clase pública FileClient {
pública estática vacía principal (String[] args) lanza una excepción {
//Utiliza el sistema de archivos local para aceptar datos de red y guardarlos como un archivo nuevo
File file = new File("d: \\fmd.doc ");
file.createNewFile();
RandomAccessFile raf = new RandomAccessFile(archivo, "rw");
// Conéctese al servidor de archivos a través de Socket
Socket server = new Socket(InetAddress.getLocalHost(), 3318);
//Cree un flujo de aceptación de red para aceptar datos de archivos del servidor p>
InputStream netIn = server .getInputStream();
InputStream in = new DataInputStream(new BufferedInputStream(netIn));
//Crear un búfer para almacenar en búfer los datos de la red
byte[] buf = nuevo byte[2048];
int num = in.read(buf);
while (num != (-1 )) {//Si se han leído todos los datos
raf.write(buf, 0, num);//Escribir datos en el archivo
raf.skipBytes(num); //Escribir bytes de archivo secuencialmente
num = in.read(buf);//Continuar leyendo archivos de la red
}
in.close() ;
raf .close();
}
}
//FileServer.java
importar java.io.*;
importar java.util.*;
importar java.net.*;
Clase pública FileServer {
public static void main(String[ ] args) lanza una excepción {
//Crea una secuencia de archivos para leer datos del archivo
Archivo file = new File("d: \\System Features.doc");
FileInputStream fos = new FileInputStream(file);
//Crear un servidor de red para aceptar solicitudes de clientes
ServerSocket ss = new ServerSocket(8801);
Socket client = ss.accept();
//Crear un flujo de salida de red y proporcionar un contenedor de datos
OutputStream netOut = client.getOutputStream();
OutputStream doc = new DataOutputStream(
new BufferedOutputStream(netOut));
//Crear búfer de lectura de archivos
byte[] buf = nuevo byte[2048];
in
t num = fos.read(buf);
while (num != (-1)) {//Si el archivo ha sido leído
doc.write(buf, 0 , num );//Escribe los datos del archivo fuera del búfer de red
doc.flush();//Actualiza el búfer y escribe los datos en el cliente
num = fos .read(buf );//Continuar leyendo datos del archivo
}
fos.close();
doc.close(); p>
}
}
*/