Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Hallo,
ich habe ein Textfile, das in etwa so aussieht:
Code:
a DT a
aaa NN <unknown>
abbrev NN <unknown>
ability NN ability
able JJ able
about IN about
above IN above
abroad RB abroad
absolute JJ absolute
abundance NN abundance
ac JJ <unknown>
academic JJ academic
academics NNS academic
accept VVP accept
accepting VVG accept
access NN access
accessallareas NNS <unknown>
accessible JJ accessible
accesskey NN <unknown>
accident NN accident
according VVG accord
account NN account
accounting NN accounting
accounts NNS account
accredited VVD accredit
achieve VV achieve
acknowledge VVP acknowledge
acres NNS acre
acronym NN acronym
across IN across
act NN act
action NN action
ich möchte immer die Worte, die NACH den mittleren bezeichnungen stehen (DT, NN, JJ, IN, RB ... die Anzahl ist begrenzt) in ein seperates Textfile ausgeben und dabei AUCH die Worte nur einmal ausgeben, die mehrmals vorkommen (also wie im obigen Beispiel "academic" nur einmal ausgeben.
Da ich Anfänger bin in Java, habe ich es bis jetzt nur geschafft, das ein und auslesen des Files zu schreiben:
Code:
import java.io.*;
public class sortieren {
public static void main(String[] args)
throws IOException {
File inputFile = new File("/Volumes/Mac/Users/maxweber/Vektor/zwei.txt");
File outputFile = new File("/Volumes/Mac/Users/maxweber/Vektor/versuch.txt");
FileReader in = new FileReader(inputFile);
FileWriter out = new FileWriter(outputFile);
int c;
while ((c = in.read()) != -1)
out.write(c);
in.close();
out.close();
}
}
aber ich weiß nicht, wie ich die seperierten Wörter auslesen kann.
Danke fürs helfen...
Stephan
1. Lese das File mit einem BufferedReader in = new BufferedReader(new FileReader(datei)) über readLine() ein - so bekommst du die ganze Zeile
2. wenn die Wörter mit einem best. Trennzeichen getrennt sind (z.B. TAB) dann zerlege sie mit einem StringTokenizer (siehe API) oder in einen Array über split (in der Klasse String). In beiden Fällen schreibe einfach ab dem zweiten Token bzw. ab dem 2. eintrag im Array in ein File.
3. Ich würde über PrintWriter w = new PrintWriter(new FileWriter(outDatei)) schreiben, da kannst einfach über println(zeile) eine Zeile schreiben
4. Speichere dir in einem Vector das erste Wort und überprüfe jede Zeile ob dieses Wort schon im Vector vorkommt --> damit schreibst du einträge nicht doppelt.
schreibe die eingelesenen Strings in ein hash-set. Set ist eine Collection die nur eindeutige Werte zulässt(nichts kann doppelt hineingespeichert werden. Danach arbeitest du es mit einem Iterator ab:
Codebeispiel:
HashSet hs = new HashSet();
Code:
while((String ein = br.readLine())!=null)
{
hs.add(ein);
}
Iterator i = hs.iterator();
while(i.hasNext())
{
bw.write(i.next());
}