Ola,
fiz um prgrama com manipulação de arquivo (segue o código).
try {
Scanner pegaNum = new java.util.Scanner(new File(dirGi));
lArq = "";
lSeq = "";
pegaNum.useDelimiter(">");
while (pegaNum.hasNext()) {
String linha = pegaNum.next().trim();
if ((linha.length() > 0)) {
num = Integer.parseInt(linha.substring(7));
System.out.println(num);
String numS=Integer.toString(num);
BufferedReader busca = new BufferedReader(
new FileReader(new File(dirArq)));
String stri = "";
boolean escreve = false;
while ((stri = busca.readLine()) != null) {
char c = stri.charAt(0);
if (Character.toString(c).equals(">")) {
if (escreve) {
escArqSplit(lArq, lSeq, num, dirResult);
escreve = false;
}
if (stri.contains(Integer.toString(num))) {
lArq = stri.toString();
escreve = true;
}
} else {
if (escreve) {
lSeq = lSeq + stri;
}
}
}
if (escreve) {
escArqSplit(lArq, lSeq, num, dirResult);
System.out.println("O gi " + lArq + " foi encontrado e escrito no arq.");
escreve = false;
}
}
}
} catch (IOException e1) {
e1.printStackTrace();
}
LblStatus2.setText("Finalizado");
}
public void escArqSplit(String arq, String seq, int busca, String pega) {
BufferedWriter out;
try {
out = new BufferedWriter(new FileWriter(new File(pega + "Split -" + busca + ".fsa")));
out.write(arq + "\r\n" + seq + "\r\n");
out.newLine();
lSeq = "";
System.out.println("O Gi " + num + " foi escrito no arquivo com sucesso");
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
});
}
porém o programa demora aproximadamente 40 minutos para ler e gravar separadamente um arquivo de 400Mb.
e uma amiga me falou que usando o HashSet, e armazenando-o em uma lista todas as sequencias seria mais rapido.
gostaria de saber se alguem me ajuda a usa-lo.
obrigado.