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

    [Java]selezionare i file in input da una cartella

    salve,
    ho creato una classe che prende in input due file xml e ne restituisce un terzo dopo aver effettuato alcune operazione sulle stringhe.
    per eseguirlo devo digitare i nomi dei file in input da riga di comando oppure utilizzando la finestra tramite "JOptionPane.showInputDialog".

    volevo sapere, non essendo molto esperto, come si può fare per selezionare i file in input da una cartella, senza dover scriverne il nome. non ho proprio idea di come si faccia

    grazie

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    il componente da usare sarebbe questo ma visti gli inizi e visto che non conosci le swing credo che dovresti usare altri metodi (come specificare il path assoluto a manina)

  3. #3
    ho dato un'occhiata al componente che mi hai indicato. Sembra fare al caso mio, ma onestamente non saprei da dove iniziare a mettere mani.
    questo è il mio codice
    codice:
    import java.io.*;
    
    
    class instanceCreator {
    	private BufferedReader inRdf, outRead, newRead;				
    	private BufferedWriter outRdf, finalRdf;
    	
    	instanceCreator (String inFile, String outFile, String newFile){
    		
    	    try {
    	      inRdf = new BufferedReader(new FileReader(inFile));
    	      outRead = new BufferedReader(new FileReader(outFile));
    	      outRdf = new BufferedWriter(new FileWriter(newFile));
    	      newRead = new BufferedReader(new FileReader(newFile));
    	      finalRdf = new BufferedWriter(new FileWriter(newFile));
    	      } catch(IOException e) {e.printStackTrace();}
    	  }	
    	
    	//Metodo complete
    	void complete() {
    		
    		try{
    			String inputLine = inRdf.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 = outRead.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);
    			
    			inRdf.close();
    			outRead.close();
    
    			outRdf.flush();
    			outRdf.close();
    				} catch(IOException e) {e.printStackTrace();}
    	 }	
    }
    
    class testInstance {
    	public static void main(String[] args) {
    	    if(args.length != 3) {
    	      System.out.println("Please enter <inFile>, <outFile>, <newFile>");
    	      System.exit(1);
    	    }
    	    
    	    instanceCreator fileRDF = new instanceCreator(args[0],args[1],args[2]);
    	    fileRDF.complete();
    	}	  
    }
    dove devo inserire i costruttori del metodo?
    o eventualmente se c'è una soluzione più "alla mia portata"...

  4. #4
    ho cercato di farlo ma il risultato è stato:
    "Exception in thread "main" : java.lang.NoSuchMethodError: main

    codice:
    import java.io.*;
    import javax.swing.*;
    import javax.swing.filechooser.*;
    
    public class provaChooser {
    	private BufferedReader datRdf, protoRdf, newRead;				
    	private BufferedWriter outRdf, finalRdf;
    	
    	provaChooser() {
    		JFileChooser fileDati = new JFileChooser();
    		fileDati.addChoosableFileFilter (new FileNameExtensionFilter ("File XML", "xml", "File RDF", "rdf"));
    		int returnD = fileDati.showOpenDialog(provaChooser.this);
    		fileDati.setApproveButtonText("Open Data File");
    		if (returnD == JFileChooser.APPROVE_OPTION) {
    			File dat = fileDati.getSelectedFile();
    			datRdf = new BufferedReader(new FileReader(dat));
    		}
    		
    		JFileChooser fileProto = new JFileChooser();
    		fileProto.addChoosableFileFilter (new FileNameExtensionFilter ("File XML", "xml", "File RDF", "rdf"));
    		int returnP = fileProto.showOpenDialog(provaChooser.this);
    		fileProto.setApproveButtonText("Open Prototype File");
    		if (returnP == JFileChooser.APPROVE_OPTION) {
    			File proto = fileProto.getSelectedFile();
    			protoRdf = new BufferedReader(new FileReader(proto));
    		}
    		
    		JFileChooser fileFin = new JFileChooser();
    		fileFin.addChoosableFileFilter (new FileNameExtensionFilter ("File RDF", "rdf"));
    		int returnF = fileFin.showSaveDialog(provaChooser.this);
    		fileFin.setApproveButtonText("Save instance");
    		if (returnF == JFileChooser.APPROVE_OPTION) {
    			File newFile = fileFin.getSelectedFile();
    			newRead = new BufferedReader(new FileReader(newFile));
    			outRdf = new BufferedWriter(new FileWriter(newFile));
    		    finalRdf = new BufferedWriter(new FileWriter(newFile));
    		} 
    	}
    		
    		//Metodo complete
    		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();}
    		
    		
    	}
    }
    
    class testChooser {
    	public static void main(String[] args) {
    	
    	    
    	    provaChooser fileRDF = new provaChooser();
    	    fileRDF.complete();
    	
    	}	  
    }
    cosa ho sbagliato?

  5. #5
    quell'errore è un pò strano, comunque non è un tuo errore ma un errore del compilatore più che altro (non trova il metodo main).

    se usi Netbeans fai un Clean & Build (per gli altri non so) e riprova.

    comunque sia aggiusta un pò la sintassi ed una domanda: perchè hai usato tanti JFileChooser diversi? non potevi usarne uno solo?
    I miei esempi in Java qui: http://cdpjavaexamples.altervista.org/index.html

  6. #6
    è la prima volta che utilizzo JFileChooser ed onestamente nn so ancora usarlo, io devo selezionare due file da dare in input e crearne uno su cui salvare.

    saresti così cortese da spiegarmi come farlo usando un solo filechooser?
    grazie mille

    p.s. cosa c'è che non va nella sintassi?

  7. #7
    anzichè creare tanti JFileChooser apri sempre lo stesso invocando sequenzialmente il showOpenDialog.
    nella sintassi non ci sono errori, ma non sono rispettate le convenzioni standard di un programma Java, tipo: i nomi delle classi iniziano per lettera maiuscola, per ogni metodo si inseriscono nella signature l'indentificatore di visibilità (anche per le classi) e il tipo di dato di ritorno, ecc...

    inoltre il main potresti metterlo nella stessa classe ProvaChooser no?
    I miei esempi in Java qui: http://cdpjavaexamples.altervista.org/index.html

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.