Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    [JAVA]Dare s file output stesso nome di file input

    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();
    			  }
    
    
    }

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Dato il file di input:

    codice:
    File nomeInput = ...;
    Così costruirai l'output (ad esempio, per costruire il .html):

    codice:
    int pos = nomeInput.getName().lastIndexOf('.');
    String nomeOutput = null;
    if (pos >= 0) {
       nomeOutput = nomeInput.getName().substring(0, pos).concat(".html");
    } else {
       nomeOutput = nomeInput.getName().concat(".html");
    }
    Ho preso in considerazione anche il caso in cui il file di input non abbia estensione.

    PS: Il primo import rende del tutto inutile l'ultimo.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Utente di HTML.it L'avatar di Dark867
    Registrato dal
    Mar 2010
    Messaggi
    435
    fileInput.getName().split(".")[0]

    getName() dovrebbe darti qualcosa tipo "file.input", con split ti pigli la parte a sinistra del punto, dopodiché ti basta concatenare l'estensione giusta

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Originariamente inviato da Dark867
    fileInput.getName().split(".")[0]

    getName() dovrebbe darti qualcosa tipo "file.input", con split ti pigli la parte a sinistra del punto, dopodiché ti basta concatenare l'estensione giusta
    Sì, anche questo può essere un modo... però non funziona nel caso in cui il nome del file contenga dei punti, tipo "MioFile.prototipo.2011.07.12.txt".

    (Vedere i punti all'interno dei nomi dei file è una cosa che odio nel profondo... purtroppo, però, sono ammessi).


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  5. #5
    Utente di HTML.it L'avatar di Dark867
    Registrato dal
    Mar 2010
    Messaggi
    435
    Non avevo visto ke avevi già risposto
    Si hai ragione, in effetti occorre fare questa ipotesi!

  6. #6
    pefetto!
    preziosi come sempre...grazie!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.