Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2011
    Messaggi
    339

    Leggere da tastiera il nome di un file

    Ciao


    Dovrei leggere da tastiera il nome di un file chiamato f1 verificando che quello che si scrive da tastiera corrisponda al nome del file corretto

    Ho iniziato con uno scanner ; dopo ho dei dubbi a proseguire

    codice:
    Scanner sc = new Scanner(System.in);
    potete postarmi il codice adatto allo scopo?

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328

    Re: Leggere da tastiera il nome di un file

    Originariamente inviato da Markus85
    Ciao


    Dovrei leggere da tastiera il nome di un file chiamato f1 verificando che quello che si scrive da tastiera corrisponda al nome del file corretto

    Ho iniziato con uno scanner ; dopo ho dei dubbi a proseguire

    codice:
    Scanner sc = new Scanner(System.in);
    potete postarmi il codice adatto allo scopo?
    Se spieghi meglio cosa vuo dire "verificando che quello che si scrive corrisponda al nome del file corretto", magari si può anche pensarci...

    Ad ogni modo, mi pare un po' pochino come inizio: hai solo costruito l'oggetto Scanner che serve per leggere... non hai nemmeno fatto la lettura.


    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
    Registrato dal
    Feb 2011
    Messaggi
    339
    Per esempio :

    io scrivo su tastiera archivio.txt

    il programma deve vedere se esiste un file di nome archivio.txt.

    poi deve leggerlo

  4. #4
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,480
    Originariamente inviato da Markus85
    Per esempio :
    io scrivo su tastiera archivio.txt
    il programma deve vedere se esiste un file di nome archivio.txt.
    poi deve leggerlo
    Hai provato a fare una ricerca con Google prima di chiedere?

    Mi sbaglierò, ma il problema mi sembra tra quelli più comuni che si possono incontrare...
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  5. #5
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Ok. Non ci vuole poi molto.
    Con l'oggetto Scanner leggi una stringa.
    Con la stringa costruisci un oggetto File
    E con l'oggetto File effettui il test per verificare se il file esiste.

    Basta usare la documentazione ufficiale:

    Documentazione della classe Scanner

    Documentazione della classe File.

    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

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2011
    Messaggi
    339
    Ok
    in parte ci sono riuscito.

    ho scritto da tastiera la directory dove si trova il file (Si chiama f1)

    poi ho fatto l'elaborazione...

    Quello che il programma non mi fa , è scrivere su un file f2 già esistente il contenuto dell'elaborazione.

    Ti posto il programmino cosi capisci meglio

    codice:
    package Poo;
    import java.util.*;
    import java.math.*;
    import java.io.*;
    
    public class Applicazione {
    	
    	public static void main(String[] args){
    		
    		Lista lista = new Lista();
    		
    		Scanner sc = new Scanner(System.in);
    		System.out.println("Inserisci la directory del file da elaborare");
    		String directoryf = sc.next();
    		File f = new File(directoryf); 
    		if(!f.exists()) throw new RuntimeException("Il file non esiste");
    		try{
    			BufferedReader in = new BufferedReader(new FileReader(directoryf));
    			String linea = in.readLine();
    			StringTokenizer st = new StringTokenizer(linea);
    			while(st.hasMoreTokens()){
    				String s = st.nextToken();
    			int n = Integer.parseInt(s);
    			lista.add(n);
    		}
    		}
    		catch(IOException e){
    			e.printStackTrace();
    		}
    		Scanner sc2 = new Scanner(System.in);
    		System.out.println("Inserisci la directory dove vuoi scrivere l'elaborazione");
    		String directoryf2 = sc2.next();
    		File f2 = new File(directoryf2);
    		if(!f2.exists()) throw new RuntimeException("Il file di destinazione non esiste");
    		try{
    			PrintWriter p = new PrintWriter(new FileWriter(directoryf2));
    			Iterator<Integer> it = lista.iterator();
    			while(it.hasNext()){
    			p.print("[");
    			p.print(it.next());
    			p.print(",");
    			}
    			p.print("]");
    			
    		}
    		catch(IOException e2){
    			e2.printStackTrace();
    		}
    		
    	
    				
    		System.out.println(lista.toString());
    	
    	}
    }
    		
    		
    class Lista extends LinkedList<Integer> {
    
    	public boolean add(Integer i) {
    		if (contains(i)) {
    			return false;
    		}
    		return super.add(i);
    	}
    	
    } // Applicazione
    in pratica ho utilizzato una linkedlist per ordinare i numeri contenuti nel file f1.txt.
    Come ripeto non riesco a scrivere il contenuto della lista sul file f2.txt

  7. #7
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Questo perchè prima leggi il file e poi tenti di scriverci sopra, senza prima chiuderlo dall'apertura precedente.

    E' una regola importante e valida per qualunque linguaggio di programmazione: quando si ha finito di usare un file, lo si deve chiudere.

    Quindi, dopo aver letto il file con BufferedReader, quest'ultimo va chiuso.

    Solo dopo potrai aprire il file in scrittura.


    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

  8. #8
    Utente di HTML.it
    Registrato dal
    Feb 2011
    Messaggi
    339
    ho provato a chiudere lo stream

    ho fatto cosi

    codice:
    finally{
    in.close();
    }
    il compilatore però di da errore e dice "in cannot be resolved"

    come mai?

  9. #9
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Originariamente inviato da Markus85
    il compilatore però di da errore e dice "in cannot be resolved"

    come mai?
    Perché in è dichiarato all'interno del blocco try ed è visibile solo lì dentro.
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  10. #10
    Utente di HTML.it
    Registrato dal
    Feb 2011
    Messaggi
    339
    ho dichiarato il finally fuori dal blocco try

    Il problema rimane

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.