metodissa
private static void MuodostatekstiRaportti() {
EventQueue.invokeLater(new Runnable() {
public void run() {
DateFormat dateFormat = new SimpleDateFormat("ddMMyyyyHHmm");
Date pvm = new Date();
String aikaleima=dateFormat.format(pvm);
RTFWriter rw = new RTFWriter();
FileWriter fw = null;
File raportti = new File (aikaleima ".RTF");
try {
fw = new FileWriter(raportti);
rw.writeAsRTF(tulostaulu.getModel(),fw);
try {
Process p = Runtime.getRuntime().exec("\"C:/Program Files/Windows NT/Accessories/wordpad.exe\"" raportti.getPath());
} catch (IOException ex) {
Logger.getLogger(uusipaalomake.class.getName()).log(Level.SEVERE, null, ex);
}
} catch (IOException ex) {
ex.printStackTrace();
}
}
});
Wordpad avautuu, mutta raportti ei. Se on kyllä olemassa ja siihen kirjoittuu sisältö.
private static void MuodostatekstiRaportti() {
EventQueue.invokeLater(new Runnable() {
public void run() {
DateFormat dateFormat = new SimpleDateFormat("ddMMyyyyHHmm");
Date pvm = new Date();
String aikaleima=dateFormat.format(pvm);
RTFWriter rw = new RTFWriter();
FileWriter fw = null;
File raportti = new File (aikaleima ".RTF");
try {
fw = new FileWriter(raportti);
rw.writeAsRTF(tulostaulu.getModel(),fw);
try {
Process p = Runtime.getRuntime().exec("\"C:/Program Files/Windows NT/Accessories/wordpad.exe\"" raportti.getPath());
} catch (IOException ex) {
Logger.getLogger(uusipaalomake.class.getName()).log(Level.SEVERE, null, ex);
}
} catch (IOException ex) {
ex.printStackTrace();
}
}
});
Wordpad avautuu, mutta raportti ei. Se on kyllä olemassa ja siihen kirjoittuu sisältö.
Vastaukset 4
Vanhimmat
System.out.println(raportti.getPath());
ennen kun ajat ton Runtimen. Tuleeko sieltä täys polku tiedoston nimen kanssa vai pelkkä polku samaan hakemistoon?
tee varmuuden vuoksi ennen prosessin ajamista joku
if(raportti.exists())
{
//aja wordpad
}
laita koko polku wordpad.exe tiedosto eka muuttujaan ja tulosta se muuttuja konsoliin. Kopioi se javan konsolista ja kokeile ajaa wintoosan konsolista. Käynnistyykö oikein wordpad ja tiedoston kanssa? Meinaan voiko olla joku merkkivirhe jossain?
String filupolku = "\"C:/Program Files/Windows NT/Accessories/wordpad.exe\"" raportti.getPath();
System.out.println(filupolku);
Process p = Runtime.getRuntime().exec(filupolku);
Hmm nyt kun kattoo muuten niin ei oo spacea wordpad.exe ja raportti.getPath() välissä eli pitäs olla
"\"C:/Program Files/Windows NT/Accessories/wordpad.exe\" " raportti.getPath();
Flushaa ja sulje filewriter ennen wordpad testiä. Kun yrität ajaa wordpadiä, tiedostoa ei ole vielä kirjoitettu levylle kokonaan!
Välilyönnin asettaminen auttoi! Mutta mietin olisiko jotain konstia, millä raportin saisi vain avattua editoriin, nythän tiedosto luodaan järjestelmään jo valmiiksi. Käyttäjä voisi sitten editorissa painaa tallennusnappulaa ja tallentaa tiedoston, jos niin haluaa. Exit on Close-tuhoaa tiedoston käytön jälkeen, mutta tällöin pitäisi sitten valita Tallenna nimellä ja eri tiedostonimi, jos tiedoston haluaa säilyttää, eikä tuota kikkaa välttämättä käyttäjä aina muista!
luoda se tiedosto levylle, että sä voit avata sen ei niitä muistiin luoda.
Voit opetella käyttämään erillistä kirjastoa RTF tiedostojen luomiseen / avaamiseen, jos tarvitsen enemmän ominaisuuksia.
Eli tarvitsetko ohjelmointirajapinnan käsitelläksesi teksti -dokumentteja
RTF - iText - http://www.lowagie.com/iText/
OpenOffice - http://wiki.services.openoffice.org/wiki/Documentation/DevGuide/OpenOffice.org_Developers_Guide