📄 hilorxfileservidor.java
字号:
/* * To change this template, choose Tools | Templates * and open the template in the editor. */package controlador;import java.io.*;import java.net.*;import java.util.logging.Level;import java.util.logging.Logger;/** *clase para recibir un archivo desde el cliente. * se implementa en un hilo para recibir * @author Camilo Andres */public class hiloRxFileServidor extends Thread{ private Socket conTxFile; private String rutaArchivo; private ObjectOutputStream salidaDatos; private ObjectInputStream entradaDatos; public hiloRxFileServidor(Socket conTxFile, String rutaArchivo) throws IOException { this.conTxFile = conTxFile; this.rutaArchivo = rutaArchivo; salidaDatos=new ObjectOutputStream(conTxFile.getOutputStream()); entradaDatos=new ObjectInputStream(conTxFile.getInputStream()); start(); } public void run() { //flujo de entrada de los datos del archivo, se usa para leer el archivo. BufferedOutputStream fout = null; try { salidaDatos.writeObject("LISTO"); long sizeFile = (Long) entradaDatos.readObject(); int TAM_BLOQUE = (Integer) entradaDatos.readObject(); System.out.println("T=" + sizeFile + " :N=" + TAM_BLOQUE); File f = new File("files\\" + rutaArchivo); fout = new BufferedOutputStream(new FileOutputStream(f)); //se va a enviar el archivo en bloques de 100 bytes. //se calcula cuantos bloque hay, int numBloques = (int) (sizeFile/TAM_BLOQUE); //los byte que sobren que no alcancen a formar un bloque. int tamResto = (int) (sizeFile%TAM_BLOQUE); //lee los numBloques bloques del archivo y los envia. long bytesRecibidos=0; for (int i = 0; i < numBloques; i++) { //Almacena el arreglo de TAM_BLOQUE los bytes en el archivo byte[] datos = (byte[]) entradaDatos.readObject(); //Almacena el arreglo de TAM_BLOQUE los bytes en el archivo fout.write(datos); bytesRecibidos+=TAM_BLOQUE; System.out.println(i+"-"+bytesRecibidos+" de "+ sizeFile); } //hay que recibir el sobrante, escribirlo en el archivo byte[] datos = (byte[]) entradaDatos.readObject(); fout.write(datos); fout.close(); } catch (IOException ex) { Logger.getLogger(hiloRxFileServidor.class.getName()).log(Level.SEVERE, null, ex); } catch (ClassNotFoundException ex) { Logger.getLogger(hiloRxFileServidor.class.getName()).log(Level.SEVERE, null, ex); } finally { try { fout.close(); } catch (IOException ex) { Logger.getLogger(hiloRxFileServidor.class.getName()).log(Level.SEVERE, null, ex); } } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -