Galera preciso fazer uma verificação das letras de um resultado tipo um gabarito. O arquivo .txt contém as informações neste formato, por exmplo:
1;VFVF
2;VVFF
…
outro arquivo com a resposta correta:
1;VVVF
2;VVFF
Se estiver de acordo com as respostas do gabarito ele contabiliza os acertos, alguma ideia?
Cliente:
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.io.PrintStream;
import java.net.Socket;
import java.net.UnknownHostException;
public class Cliente {
public static void main(String[] args) throws UnknownHostException, IOException {
Socket cliente = new Socket("127.0.0.1", 12345);
String caminho = "D:\\arquivoLadoCliente.txt";
System.out.println("* O cliente se conectou ao servidor!");
System.out.println("* Mensagem do cliente salva em: " + caminho);
PrintStream saida = new PrintStream(cliente.getOutputStream());
BufferedReader br = new BufferedReader(new FileReader(caminho));
String linha = "";
String n1 = "";
int linhaAtual = 1;
System.out.println("* Conteúdo do cliente: ");
while (br.ready()) {
linha = br.readLine();
n1 = linha;
System.out.println("* Linha["+linhaAtual+"]: " + linha);
saida.println(n1);
linhaAtual++;
}
br.close();
saida.close();
}
}
Servidor:
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Scanner;
public class Servidor2 {
public static void main(String[] args) throws IOException {
String url = "D:\\arquivoLadoCliente.txt"; //caminho do arquivo cliente
String url2 = "D:\\arquivoLadoServidor.txt"; //caminho do arquivo servidor
ServerSocket servidor = new ServerSocket(12345);
System.out.println("Porta 12345 aberta!");
Socket cliente = servidor.accept(); //recebendo conexão com o cliente
System.out.println("Nova conexão com o cliente " + cliente.getInetAddress().getHostAddress());
Scanner entrada = new Scanner(cliente.getInputStream()); //Lê a entrada do cliente
System.out.println("* Mensagem do cliente: ");
while (entrada.hasNextLine()) {
System.out.println(entrada.nextLine()); //retorna a mensagem enviada do cliente
}
entrada.close(); //fecha arquivo entrada
servidor.close(); //fecha conexão com servidor
//--Leitura do arquivo do cliente
System.out.println("* Lendo arquivo do cliente: " + url);
String leitura = null;
Path caminho = Paths.get(url);
BufferedReader br = new BufferedReader(new FileReader(url));
//try catch, caso ocorra erro na criação do arquivo.
try {
byte[] texto = Files.readAllBytes(caminho);
leitura = new String(texto);
//System.out.println("* Conteúdo do arquivo: \n" + leitura);
int linhaAtual = 1;
String linha = null;
while ((linha = br.readLine()) != null) {
int numero = Integer.parseInt(String.valueOf(linha.charAt(0)));
if ((numero == linhaAtual) && (linha.charAt(1) == ';') && (linha.trim().substring(2, 5).matches("[V+F]*"))) {
System.out.println("Linha["+linhaAtual+"]: Verificado com sucesso...");
} else {
System.out.println("Linha["+linhaAtual+"]: Erro na verificação...");
System.exit(0);
}
linhaAtual++;
}
} catch (Exception erro) {
}
//--Salvando arquivo no servidor
System.out.println("* Salvando arquivo no servidor: " + url2);
Path caminho2 = Paths.get(url2);
String texto = leitura;
byte[] textoEmByte = texto.getBytes();
try {
Files.write(caminho2, textoEmByte);
} catch (Exception erro) {
}
//verifica
//Quantidade de palavras
int palavraV = 0;
int palavraF = 0;
String frase = " ";
frase = texto;
for (int i = 0; i < frase.length(); i++) {
if (frase.charAt(i) == 'V') {
palavraV = palavraV + 1;
}
if (frase.charAt(i) == 'F') {
palavraF = palavraF + 1;
}
}
System.out.println("Quantidade V:" + palavraV);
System.out.println("Quantidade F:" + palavraF);
}
}