ho scritto una classe che ha due file di input i cui nomi sono del tipo "nome_file.xml" e "proto_nome_file.rdf" e due file di output i cui nomi sono del tipo "nome_file.html" e "nome_file.rdf".
così come l'ho scritto però, ogni volta che lo eseguo devo specificare i nomi dei file di output d tastiera.
considerando che i file di output hanno lo stesso nome di uno dei file di input, fatta eccezione per l'estensione, come potrei fare in modo che una volta scelti i file di input, i nomi degli output vengano salvati automaticamente cambiando solo l'estensione di questi ultimi?
posto il codice...grazie a chiunque mi aiuterà.
codice:import java.io.*; import javax.swing.JFileChooser; import javax.swing.filechooser.FileNameExtensionFilter; import javax.swing.*; import javax.xml.transform.*; import javax.xml.transform.stream.*; import javax.swing.JFileChooser; import javax.swing.filechooser.*; import java.util.Properties; import java.io.FileInputStream; public class Xml2Rdf { private BufferedWriter xmlMd, xmlDat, xmlTrans, outRdf, finalRdf; private BufferedReader xmlStart, xmlMeta, xmlD, protoRdf, datRdf, newRead; private StreamSource xmlInput, xslSheet, xmlData, xslCssSheet; private StreamResult htmlResult, cssOutput; Xml2Rdf () throws Throwable { JFileChooser chooser = new JFileChooser(); chooser.setDialogTitle("Open M-Ontomat Output File"); chooser.setApproveButtonText("Open M-Ontomat output"); chooser.addChoosableFileFilter (new FileNameExtensionFilter ("File XML", "xml")); int returnS = chooser.showOpenDialog(null); if (returnS == JFileChooser.APPROVE_OPTION) { File start = chooser.getSelectedFile(); xmlStart = new BufferedReader(new FileReader(start)); } chooser.setDialogTitle("Open Prototype File"); chooser.setApproveButtonText("Open Prototype"); chooser.addChoosableFileFilter (new FileNameExtensionFilter ("File XML", "xml", "File RDF", "rdf")); int returnP = chooser.showOpenDialog(null); if (returnP == JFileChooser.APPROVE_OPTION) { File proto = chooser.getSelectedFile(); protoRdf = new BufferedReader(new FileReader(proto)); } chooser.setDialogTitle("Save HTML Table Page"); chooser.setApproveButtonText("Save Table"); chooser.addChoosableFileFilter (new FileNameExtensionFilter ("File HTML", "html")); int returnT = chooser.showSaveDialog(null); if (returnT == JFileChooser.APPROVE_OPTION) { try{ File table = chooser.getSelectedFile(); table.createNewFile(); htmlResult = new StreamResult(new FileWriter(table)); }catch ( IOException e ){e.printStackTrace();} } chooser.setDialogTitle("Save Instance"); chooser.setApproveButtonText("Save Instance"); chooser.addChoosableFileFilter (new FileNameExtensionFilter ("File RDF", "rdf")); int returnF = chooser.showSaveDialog(null); if (returnF == JFileChooser.APPROVE_OPTION) { try{ File newFile = chooser.getSelectedFile(); newFile.createNewFile(); newRead = new BufferedReader(new FileReader(newFile)); outRdf = new BufferedWriter(new FileWriter(newFile)); finalRdf = new BufferedWriter(new FileWriter(newFile)); }catch ( IOException e ){e.printStackTrace();} } Properties prop = new Properties(); try{ File p = new File("./xml2rdf.properties"); prop.load(new FileInputStream(p)); String pathTab = prop.getProperty("table"); File xslTab = new File(pathTab); xslSheet = new StreamSource(new FileReader(xslTab)); String pathCss = prop.getProperty("t_css"); File xslCss = new File(pathCss); xslCssSheet = new StreamSource(new FileReader(xslCss)); }catch (IOException ex) {ex.printStackTrace();} try{ File data = File.createTempFile("dat_", ".xml"); xmlDat = new BufferedWriter(new FileWriter(data)); xmlD = new BufferedReader(new FileReader(data)); xmlData = new StreamSource(new FileReader(data)); data.deleteOnExit(); File md = File.createTempFile("md_", ".xml"); xmlMd = new BufferedWriter(new FileWriter(md)); xmlMeta = new BufferedReader(new FileReader(md)); md.deleteOnExit(); File mid = File.createTempFile("mid", ".xml"); xmlTrans = new BufferedWriter(new FileWriter(mid)); xmlInput = new StreamSource(new FileReader(mid)); mid.deleteOnExit(); File css = File.createTempFile("css_", ".rdf"); cssOutput = new StreamResult(new FileWriter(css)); datRdf = new BufferedReader(new FileReader(css)); css.deleteOnExit(); }catch ( IOException e ){e.printStackTrace();} } void parse() { String inputLine = ""; try { xmlMd.write("<?xml version='1.0' encoding='ISO-8859-1' ?>"); xmlMd.newLine(); xmlMd.write("<?xml-stylesheet type="); xmlMd.write('"'); xmlMd.write("text/xsl"); xmlMd.write('"'); xmlMd.write(" href="); xmlMd.write('"'); xmlMd.write("tabella.xsl"); xmlMd.write('"'); xmlMd.write("?>"); xmlMd.newLine(); xmlMd.write("<meta>"); while((inputLine = xmlStart.readLine()) != null) { if(inputLine.equals("")) continue; inputLine = inputLine.trim(); switch(inputLine.charAt(1)) { case '-': break; case '?': xmlDat.write(inputLine); xmlDat.newLine(); xmlDat.write("<?xml-stylesheet type="); xmlDat.write('"'); xmlDat.write("text/xsl"); xmlDat.write('"'); xmlDat.write(" href="); xmlDat.write('"'); xmlDat.write("tabella.xsl"); xmlDat.write('"'); xmlDat.write("?>"); xmlDat.newLine(); break; case 'G': case 'P': case 'H': case '/': xmlDat.write(inputLine); xmlDat.newLine(); break; case 'M': xmlDat.write("<Mpeg7><DescriptionUnit><Descriptor><Region><RegionNumber>255</RegionNumber>"); xmlDat.newLine(); break; default: int dots = inputLine.indexOf(':'); xmlMd.write("<"+inputLine.substring(0,dots)+">"); xmlMd.write((inputLine.substring(dots+1).trim())); xmlMd.write("</"+inputLine.substring(0,dots)+">"); xmlMd.newLine(); break; } } xmlMd.write("</meta>"); xmlStart.close(); xmlDat.flush(); xmlDat.close(); xmlMd.flush(); xmlMd.close(); } catch(IOException e) {e.printStackTrace();} } void createInput() throws Throwable{ String dataLine = ""; String metaLine = ""; String pref = "<?"; String suff = "\"?>"; while((metaLine = xmlMeta.readLine()) != null) { if (metaLine.endsWith(suff)){ xmlTrans.write(metaLine); xmlTrans.write("<css>"); }else{ xmlTrans.write(metaLine); } } while((dataLine = xmlD.readLine()) != null) { if ((dataLine.startsWith(pref)) != true) { xmlTrans.write(dataLine); } } xmlTrans.write("</css>"); xmlMeta.close(); xmlD.close(); xmlTrans.flush(); xmlTrans.close(); } void transformTab() throws Throwable{ TransformerFactory transFactory = TransformerFactory.newInstance(); Transformer transformer = transFactory.newTransformer(xslSheet); transformer.transform(xmlInput, htmlResult); } void transformCss() throws Throwable{ TransformerFactory transFactory = TransformerFactory.newInstance(); Transformer transformer = transFactory.newTransformer(xslCssSheet); transformer.transform(xmlData, cssOutput); } void complete() { try{ String inputLine = datRdf.readLine(); int beginInd = 0; int apartInd = inputLine.indexOf("@"); int vdoInd = apartInd+1; String ns = inputLine.substring(beginInd, apartInd); String vdo = inputLine.substring(vdoInd); outRdf.write(ns); String pref = "<vdoext:h"; String protoLine; while ((protoLine = protoRdf.readLine()) != null){ if (protoLine.startsWith(pref)) { String end = "\"/"; String link = "link"; String virg = "\""; int bInd = 35; int eInd = (protoLine.indexOf(end)); link = protoLine.substring(bInd, eInd); outRdf.newLine(); outRdf.write(protoLine); vdo = vdo.replaceFirst(virg,link); }else{ outRdf.newLine(); outRdf.write(protoLine); } } outRdf.newLine(); CharSequence csq = vdo; outRdf.append(csq); datRdf.close(); protoRdf.close(); outRdf.flush(); outRdf.close(); } catch(IOException e) {e.printStackTrace();} } public static void main(String[] args) throws Throwable { Xml2Rdf fileXML = new Xml2Rdf(); fileXML.parse(); fileXML.createInput(); fileXML.transformTab(); fileXML.transformCss(); fileXML.complete(); } }

Rispondi quotando

