Olá pessoal... Prontos para a minha primeira pergunta aqui no fórum??? hehehe...
A mais ou menos um ano acompanho vcs off, e TUDO o que eu aprendi de java eu encontrei aqui. Mas agora estou com uma dúvida sobre algo e gostaria de ajuda de vcs, se couber.
Primeiramente vou dizer que meu tópico será grande, então se estiver sem tempo... hehehe...
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.channels.FileChannel;
public class exemploParaOGuj {
public static void copy(String fOrigem, String fDestino, int numeroPartes) throws FileNotFoundException, IOException {
FileInputStream origem = new FileInputStream(fOrigem);
FileOutputStream destino = new FileOutputStream(fDestino);;
FileChannel fcOrigem = origem.getChannel();
FileChannel fcDestino = destino.getChannel();
fcOrigem.transferTo(0, fcOrigem.size(), fcDestino);
destino.close();
origem.close();
}
}
public void teste() throws FileNotFoundException, IOException{
File file = new File("teste.txt");
File fileout = new File("testeOut.txt");
FileInputStream fis = new FileInputStream(file);
FileOutputStream fos = new FileOutputStream(fileout);
int dataByteSize = 1024;
int count = 0;
byte[] dataBytes = new byte[dataByteSize];
int nread = 0;
while ((nread = fis.read(dataBytes)) != -1) {
fos.write(dataBytes, 0, nread);
};
}
import java.io.*;
import java.net.*;
public class Server {
public static void main(String[] args) {
int port = 5678;
String outFile = "testeServer.rar";
String inFile = "I:\\testeCliente.rar";
try {
ServerSocket MyService = new ServerSocket(port);
System.out.println("Aguardando conexão...");
Socket serviceSocket = MyService.accept();
File file = new File(outFile);
DataInputStream input = new DataInputStream(new FileInputStream(file));
DataOutputStream output = new DataOutputStream(new FileOutputStream(inFile));
DataInputStream inputMsg = new DataInputStream(serviceSocket.getInputStream());
DataOutputStream outputMsg = new DataOutputStream(serviceSocket.getOutputStream());
System.out.println("IP: " + inputMsg.readUTF());
System.out.println("Nome: " + inputMsg.readUTF());
byte[] cache = new byte[10240];
int size = 0;
while ((size = input.read(cache)) > -1) {
outputMsg.write(cache, 0, size);
}
int readByte = inputMsg.read();
while (readByte != -1) {
output.write((byte) readByte);
readByte = inputMsg.read();
}
inputMsg.close();
outputMsg.close();
input.close();
output.close();
serviceSocket.close();
MyService.close();
} catch (Exception e) {
System.err.println(e.toString());
}
}
}
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;
import java.nio.channels.SocketChannel;
public class Client {
public static void main(String[] args) {
int port = 5678;
InetAddress ia = null;
try {
ia = InetAddress.getLocalHost();
} catch (UnknownHostException e) {
e.printStackTrace();
}
//String IP = ia.getHostAddress();
String IP = "localhost";
String inFile = "D:\\testeServer.rar";
String outFile = "testeCliente.rar";
try {
Socket MyCliente = new Socket(IP, port);
File file = new File(outFile);
DataInputStream input = new DataInputStream(new FileInputStream(file));
DataOutputStream output = new DataOutputStream(new FileOutputStream(inFile));
DataInputStream inputMsg = new DataInputStream(MyCliente.getInputStream());
DataOutputStream outputMsg = new DataOutputStream(MyCliente.getOutputStream());
outputMsg.writeUTF(ia.getHostAddress());
outputMsg.writeUTF(ia.getHostName());
int readByte = inputMsg.read();
while (readByte != -1) {
output.write((byte) readByte);
readByte = inputMsg.read();
}
byte[] cache = new byte[10240];
int size = 0;
while ((size = input.read(cache)) > -1) {
outputMsg.write(cache, 0, size);
}
inputMsg.close();
outputMsg.close();
input.close();
output.close();
MyCliente.close();
} catch (Exception e) {
System.err.println(e.toString());
}
}
}
esse código é funcional: COPIA BELEZINHA, mas por ele usar InputStreams ele cria um arquivo novo com o mesmo conteúdo (MUDA A MD5, O QUE EU NÃO QUERO - NÃO POSSO).
Eu estou pensando em pegar o arquivo a ser copiado, colocar dentro de um arquivo ZIP (já tenho pronto), transferir, retirar do arquivo zip e depois verificar a MD5, mas isso demoraria muito, pois ao invés de apenas TRANSFERIR, eu teria que fazer mais dois processos, o de compactação e o de descompactação.
A pergunta é: tem como fazer essa transferência via net (servidor - cliente) sem perder a MD5???? Pois eu acho que vai ser muito GAMBIARRENTO o programa se eu tiver que usar ZIP pra manter minha MD5 (o meu programa usa a MD5 para várias coisas, inclusive pra testar a integridade do arquivo.
Agradeço se alguém tiver alguma dica de pelo menos "onde eu devo procurar"...
Obrigado.
) e comparar binariamente com algum programa - no Windows, pelo Command Prompt, você pode usar o “fc” (use a opção “fc /b” para comparar binariamente os arquivos) e no Linux existe também o “fc”.