Acerca del uso de sockets JAVA para transferir archivos
/*
Importar Java.io.*;
Importar Java.net.*;
Importar Java. util *;
*/
Conexión HttpURLConnection privada; //Conexión de almacenamiento
private int downsize =-1; tamaño, el valor inicial es -1.
private int downed = 0; //El tamaño de descarga de Wenjia, el valor inicial es 0.
archivo privado de acceso aleatorio para guardar; //Registrar el archivo de almacenamiento de información de descarga
URL privada del archivo // Registre la dirección del archivo que se descargará.
Secuencia de archivos privada DataInputStream; //Registra la secuencia de datos descargados
Pruebe {
/*Comienza a crear el archivo de almacenamiento descargado e inicializa el valor*/< / p>
Archivo temporal objeto = new File("h:\\webwork-2.1.7.zip");
if (!tempfile object.exists()){
/*Crear si el archivo no existe*/
tempfileobject.crea nuevo archivo();
}
guardar archivo = nuevo acceso aleatorio. file( objeto archivo temporal, "rw");
/*Establecer conexión*/
fileurl = nueva URL("/files/documents/693/9723/webwork-2.1.7 .zip ");
conexión = (HttpURLConnection) fileurl.open conexión();
conexión.setrequestproperty("Range", "byte="this.downed"-") ;
this . downsize = conexión . getcontentlength ();
// system . println (conexión . getcontentlength ()); este) . start();
}
Catch (Excepción e) {
system out . p>System.out.println("Error del generador");
system.exit(0);
}
public void run() {
/*Comienza a descargar el archivo. Las siguientes pruebas continuarán sin puntos de interrupción. Hay un problema con el archivo descargado */
Prueba {
system . println ("begin!);
Fecha, hora de inicio = nueva fecha. ();
begintime.setTime(nuevaFecha().
getTime());
byte[]byte de archivo;
int onecelen
//system out . getClass().getName());
this . filestream = new data inputstream(
new buffer input stream(
this . conexión . getinputstream()) ));
system . println ("size = " this . downsize
mientras (this.downsize ! = this . downsize ){
< p); > if (this . downsize - this . down > 262144) { //Establece el caché máximo en 256 KB.filebyte = nuevo byte [262144];
onecelen = 262144
}
En caso contrario {
byte de archivo = nuevo byte[este. reducir-este];
onecelen = esto. reducir-este;
}
onecelen = esto. . filestream lectura (byte de archivo, 0, un celen);
este archivo guardado. escritura (byte de archivo, 0, un celen); ;
sistema . println (este . caído);
este archivo guardado . system .out .println("¡fin!");
system .out .println(hora de inicio .gettime()); .getTime ());
system.out.println(begin time.gettime()-newDate().getTime());
}
capture (Excepción e) {
system.out.println(e.tostring());
System.out.println("Hay un problema con el método run() !");
}
}
/***
//FileClient.java
Importar Java io *;
Importar Java net *;
Cliente de archivo de clase pública {
Public static void main(String[]args) lanza una excepción {
//Utilice el sistema de archivos local para aceptar datos de la red y guardarlos como un archivo nuevo.
Archivo archivo = nuevo archivo("d:\\FMD.doc");
archivo .create nuevo archivo()
RandomAccessFile RAF = nuevo; RandomAccessFile(file, "rw");
//Conéctese al servidor de archivos a través de Socket.
Socket server = new Socket(inet address. getlocalhost(), 3318);
//Crear un flujo de aceptación de red para aceptar datos de archivos del servidor
InputStream netIn = server.getinputstream();
InputStream in = nuevos datos InputStream(new BufferedInputStream(netIn));
//Crear un búfer para almacenar datos de red
byte[]buf = nuevo byte[2048];
int num = in .
while (num!= (-1)){// ¿Has terminado de leer los datos?
RAF . write(buf, 0, num); //Escribe datos en el archivo
RAF . skip bytes(num); //Escribe bytes del archivo en orden
num = in. read(buf); //Continuar leyendo archivos de la red.
}
en .cerrar();
RAF cerrar()
}
}
//FileServer.java
Importar Java io *;
Importar Java util . net.*;
Servidor de archivos de clase pública {
Public static void main(String[]args) lanza una excepción {
//Crear una secuencia de archivos para leer Obtener los datos del archivo.
Archivo archivo = nuevo archivo("d:\\SystemFunction.doc");
archivo inputstream fos = nuevo archivo inputstream(archivo);
/ /Crear un servidor web para aceptar solicitudes de clientes.
server socket ss = new server socket (8801);
socket client = ss.accept();
//Crear un flujo de salida de red y proporcionar Paquete de datos.
flujo de salida netOut = client.get flujo de salida();
documento de flujo de salida = nuevo flujo de salida de datos(
new BufferedOutputStream(netOut));
//Crear búfer de lectura de archivos
byte[]buf = new byte[2048];
int num = fos.read(buf); >
while(num!=(-1)){//¿Has terminado de leer el archivo?
doc.write(buf,0,num); //Escribe los datos del archivo desde el búfer de la red
doc.flush() //Actualiza el búfer en el cliente. datos.
num = fos.read(buf); //Continuar leyendo datos del archivo
}
fos.close();
doc.close();
}
}
*/