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


}