JavaBib und PrintWriter - BibTex-Datei schreiben

Status
Nicht offen für weitere Antworten.

Daniel_L

Bekanntes Mitglied
Hallo,

kennt jemand von euch die Bibliothek javabib? Es ist eine API zum Parsen von BibTex-Dateien. Das parsen an sich klappt auch wunderbar:
Code:
            BibtexFile bf = new BibtexFile();
            BibtexParser bp = new BibtexParser(false);
            InputStreamReader isr;
            InputStream is;
            try {
                File bibfile = fc.getSelectedFile();
                is = new FileInputStream(bibfile);
                isr = new InputStreamReader(is, "ISO8859_1");
                bp.parse(bf, isr);
                List<BibtexNode> bibNodes = bf.getEntries();
                BibtexEntry flushit = null;
                for(BibtexNode node: bibNodes) {
                    if(node instanceof BibtexEntry) {
                        // get bibtex-entry
                        BibtexEntry entry = (BibtexEntry)node;
                        // get all entry fields
                        Map m = entry.getFields();
                        // retrieve all keys, i.e. author, title etc.
                        Set<?> ks = m.keySet();
                        Iterator<?> ksi = ks.iterator();
                        while(ksi.hasNext()) {
                            String s = (String) ksi.next();
                            System.out.println(s);
                        }
                        // retrieve all values
                        Collection<?> c = m.values();
                        Iterator<?> i = c.iterator();
                        while (i.hasNext()) {
                            BibtexString bs = (BibtexString)i.next();
                            System.out.println(bs.getContent());
                        }
                    }
...

So, aber das Schreiben in eine Datei, das versteh ich noch nicht. Nun gibt es die Methode printBibtex, sowohl beim BibtexFile als auch bei BibtexEntry.

Die Methode über den PrintWriter scheint die einzige Möglichkeit zu sein, Daten wieder auszugeben. Wie kriegt man diese am besten über PrintWriter in eine Datei?

Habe schon im obigen Code in die for-next-Schleife folgendes versucht:
Code:
                    BibtexFile bibf = new BibtexFile();
                    bibf.addEntry(entry);
                    PrintWriter pf = new PrintWriter(new File(bibfile.toString()+"2"));
                    bibf.printBibtex(pf);

Aber da gibt es angeblich eine Null-Pointer-Exception in der Zeile mit "printBibtex(pf)":
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at bibtex.dom.BibtexFile.printBibtex(BibtexFile.java:135)
 

hdi

Top Contributor
Ich hab keine Ahnung von dieser Bibliothek, aber gibt es dazu keine API?
Ich meine irgendwo musst du hier ja ein null-Objekt haben, was etwas komisch ist,
wenn der Fehler wirklich in dem unten geposteten Code vorkommt.

Immerhin kann ein Konstruktor glaub ich niemals ein null zurückliefern. Er kann
ja "this" nicht schreiben. Also.. Wo genau liegt denn deine Zeile 135?
 

hdi

Top Contributor
Überprüf doch mal mit System.out.print Meldungen ob bibf null ist,
oder pf null ist.
Ansonsten, weisst du was diese printBibtex genau macht? Haste Zugriff auf
den Source-Code der Methode?

Setz doch mal n Debug Punkt dorthin, dann siehste ja ob der Debugger sich den
Source irgendwoher ziehen kann.
 

Daniel_L

Bekanntes Mitglied
ich glaube, den Source kann man sich dort auch herunterladen. Ich schau mir das mal an. Mal sehen, ob ich daraus schlau werde.
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben