⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hilorxfilecliente.java

📁 Example FTP server client/server
💻 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.Observable;import java.util.logging.Level;import java.util.logging.Logger;import vista.dialogoProgresoArchivo;/** *clase-hilo que recibe un archivo desde el servidor. * @author Camilo Andres */public class hiloRXFileCliente extends Observable implements  Runnable{    private Socket conRXFile;    private String rutaArchivo;    private ObjectOutputStream salidaDatos;    private ObjectInputStream entradaDatos;    dialogoProgresoArchivo dialogo;    /**     * constructor que recibe como parametro el socket con el      * @param conRXFile     * @param rutaArchivo     * @throws java.io.IOException     */    public hiloRXFileCliente(Socket conRXFile, String rutaArchivo) throws IOException    {        this.conRXFile = conRXFile;        this.rutaArchivo = rutaArchivo;        salidaDatos=new ObjectOutputStream(conRXFile.getOutputStream());        entradaDatos=new ObjectInputStream(conRXFile.getInputStream());    }    public void run()    {        //flujo de entrada de los datos del archivo, se usa para leer el archivo.        BufferedOutputStream fout = null;        try {            //avisa al que va a transmitir el archivo que ya esta listo            //para recibierlo..            salidaDatos.writeObject("LISTO");            long sizeFile = (Long) entradaDatos.readObject();            int TAM_BLOQUE = (Integer) entradaDatos.readObject();            //cuadro de dialogo donde se muestra el proceso de la descarga.            dialogo=new dialogoProgresoArchivo(rutaArchivo, sizeFile);            //añade a esta clase que es observable el observador que            //sera el dialogo que se acabo decrear.            addObserver(dialogo);                        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;                setChanged();notifyObservers(bytesRecibidos);                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();            setChanged();notifyObservers(sizeFile);                    } catch (IOException ex) {            Logger.getLogger(hiloRXFileCliente.class.getName()).log(Level.SEVERE, null, ex);        } catch (ClassNotFoundException ex) {            Logger.getLogger(hiloRXFileCliente.class.getName()).log(Level.SEVERE, null, ex);        }        finally        {            try {                fout.close();            } catch (IOException ex) {                Logger.getLogger(hiloRXFileCliente.class.getName()).log(Level.SEVERE, null, ex);            }        }    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -