- Home
- Categorie
- Coding e Sistemistica
- Altri linguaggi per il web
- leggere txt - esaminarlo - scrivere txt nuovo
-
P.S. tutto questo devo farlo in Java
-
Credo sarebbe meglio indicare un esempio di successione delle righe del file, una decina possono bastare, e magari che tipo di confronto fare.
-
Questa è una parte della struttura del txt, ma i vari blocchi hanno la stessa struttura di questi che ho copiato:
<<
Legenda:
Hairpin ed Energia (1° Rigo)
Sequenza (2°Rigo)
Posizione dell'hairpin in HPV(3° Rigo)
Nome del Gene (4° Rigo)
Seed (5° Rigo)
Posizione del Seed in HPV (6° Rigo)
Posizione del complementare del seed nell'UTR (7° Rigo)
Braccio dell'Hairpin in cui si trova il seed(8° Rigo).(((......(((.(((((((.((((....(((((...(((((((..(-31.00)
AGCTGGACAAGCAGAACCGGACAGAGCCCATTACAATATTGTAACCTTTTGTT
684
(SPRK)
TGTGACTC
742
42
3p.(((((..((((((((((((..........((..(((((((.(.((... (-30.60)
TTGGTTTTCCTGACACCTCATTTTATAATCCAGATACACAGCGGCTGGTTTGGGCCT
5884
(SPRK)
TTCCTGAC
5890
126
5p.(((......(((.(((((((.((((....(((((...(((((((.....)(-31.00)
AGCTGGACAAGCAGAACCGGACAGAGCCCATTACAATATTGTAACCTTTTGTTGCAA
684
(SPRK)
TGTGACT
742
43
3p.(((((..((((((((((((..........((..(((((((.(.((.... (-30.60)
TTGGTTTTCCTGACACCTCATTTTATAATCCAGATACACAGCGGCTGGTTTGGGCC
5884
(SPRK)
TTCCTGA
5890
127
5p.(((((..((((((((((((..........((..(((((((.(.((.. (-30.60)
TTGGTTTTCCTGACACCTCATTTTATAATCCAGATACACAGCGGCTGGTTTGGT
5884
SAA2/NM_001127380.1
TTTATAA
5905
870
5pConsidera che io, esclusa la leggenda, devo esaminare il 4° rigo di ogni blocco e SOLO se c'è scritto lo stesso nome devo esaminare il 5°rigo, se quest'ultimo è uguale o compreso allora scarto l'intero blocco dove questo è compreso, altrimenti se sono diversi scriverò nell'output l'intero blocco.
Ad esempio:confronto il primo blocco col secondo e noto che il 4° rigo del primo blocco (SPRK) è uguale a quello del secondo blocco, allora esamino il 5° rigo di entrambi e noto che però non sono nè uguali nè compresi l'uno nell'altro (TGTGACTC con TTCCTGAC) per cui entrambi i blocchi restano nel testo e passo a confrontare il primo blocco col terzo blocco. In questo caso il quarto rigo è sempre uguale (SPRK) allora esamino il 5° rigo e vedo che TGTGACT è compreso in TGTGACTC per cui posso scartare l'intero terzo blocco, e così via....nell'ultimo blocco noto invece che addirittura il 4° rigo è diverso e quindi neanche effettuerò un controllo e li lascerò entrambi nel testo...ecc...(perchè i blocchi sono un centinaio).
Forse non sono stato chiarissimo ?!?!
Spero tu possa aiutarmi.
-
Ricordiamo a tutti che stiamo parlando di JAVA.
Io farei cosi mi preparo una struttura dati da me definita che contenga le 8 righe, e ogni 8 righe compongo un nuovo oggetto di questa struttura mentre sto leggendo il file txt.
Alla fine della lettura di tutto il file txt, avrai il vettore della tua struttura dati con tutti di i blocchi di 8 righe da confrontare.Ti dovrebbe risultare tutto piu facile in quanto farei una cosa del tipo oggetto(i)->4riga per il confronto.
-
capito, potresti farmi un esempio di codice sia per come creare la struttura dati e sia per copiare di volta in volta il blocco di 8 righe dal txt?
grazie
-
Saran 5 anni che non uso Java, posso trovare il tempo di un breve ripasso durante il fine settimana, nel frattempo magari vediamo se qualche utente arriva con la soluzione.
-
ok grazie tante
-
ok fatto grazie lo stesso
-
Magari potresti postare la soluzione se ti va, cosi altri utenti potrebbero prendere spunto.
-
Certamente grazie al fondamentale aiuto di un ragazzo:
import java.io.;
import java.util.;public class Main {
public static void main(String[] args) throws Exception{ HashMap hm = new HashMap(); FileReader fr = new FileReader("NomeFile.txt"); BufferedReader br = new BufferedReader(fr); String s; while((s = br.readLine()) != null) { if (!hm.containsKey(s)) hm.put(s,s); } fr.close(); Set set = hm.entrySet(); Iterator i = set.iterator(); FileWriter fw = new FileWriter(new File("output.txt")); BufferedWriter bw = new BufferedWriter(fw); while(i.hasNext()){ Map.Entry me = (Map.Entry)i.next(); bw.write((String)me.getValue()); bw.newLine(); } fw.close(); }
}