Rinominare e spostare un file

di il
5 risposte

Rinominare e spostare un file

Salve a tutti sto sbattendo la testa su un problema stupidissimo che però mi sta bloccando. Vi spiego.
In pratica tramite un JFileChooser carico un file sulla mia applicazione, dopo di che mi interesserebbe cambiare innanzitutto il nome del file appena caricato in "inputFile.txt" dopo di che vorrei spostare il file caricato e con il nome cambiato in una cartella specifica. (in pratica devo cambiare il path di questo file caricato oltre al nome).
Per esempio carico tramite il tasto sfoglia (JFileChooser), un file che si chiama "dieta.txt" e che si trova in un punto random del computer; dopo che l'ho caricato lo stesso file lo devo cambiare il nome in "inputFile.txt" e poi lo metto in una cartella che per esempio di trova sul desktop.

Allora dal punto di vista teorico dovrebbe essere semplice ma non ci riesco in nessun modo. Riesco a caricare il file correttamente ma non ho capito come fare a cambiargli path e quindi nome senza alterare ciò che il file contiene. Ho provato sia con toRename sia con Files.move però mi vengono fuori eccezioni o errori! qualcuno mi saprebbe dire anche solo a parole quali passi dovei seguire per fare ciò che voglio?

5 Risposte

  • Re: Rinominare e spostare un file

    andreiiz ha scritto:


    Ho provato sia con toRename sia con Files.move però mi vengono fuori eccezioni o errori! qualcuno mi saprebbe dire anche solo a parole quali passi dovei seguire per fare ciò che voglio?
    Innanzitutto assicurati di non avere stream aperti sul file. Come hai "aperto" il file per leggerne il contenuto? FileInputStream? FileReader? Assicurati di chiudere sempre questi oggetti di I/O.
    Poi comunque verifica bene la documentazione di File.renameTo e Files.move. Per renameTo ci sono diversi aspetti sul suo comportamento che non dipendono da Java ma dalla piattaforma sottostante. Meglio in generale Files.move
  • Re: Rinominare e spostare un file

    Il fatto è che per assurdo a me non interessa neanche aprire il file. Nel senso che devo solo cambiare nome e metterlo in una certa cartella, quindi in un certo percorso. Una volta preso il file dal filechooser mi trovo in questa situazione:
    File f = filechooser.GetSelectedFile();

    e così ho finalmente il mio bel file che si chiama per esempio "dieta.txt". Bene ora a me non interessa ne leggerlo nel aprirlo ne nulla, ma solo cambiargli il nome e la posizione. Come posso fare? Diciamo che renameTo ormai l'ho abbandonato visto che l'ho provato in tutti i modi ma non funge. Invece FIles.move qualcosa la fa ma mi cambia anche il contenuto del file..Ora continuo a fare prove ma se qualcuno mi sa dire a parole in linea teorica come muovermi sarebbe meglio. (non avevo mai lavorato con le factory Paths e Files)


    EDIT: cioè io ottengo dal filechooser un oggetto di tipo file. Poi invece per usare la move mi serve lavorare con la classe statica Files. Come faccio a costruirmi un oggetto FIles da un oggetto File? non mi riesce
  • Re: Rinominare e spostare un file

    andreiiz ha scritto:


    EDIT: cioè io ottengo dal filechooser un oggetto di tipo file. Poi invece per usare la move mi serve lavorare con la classe statica Files. Come faccio a costruirmi un oggetto FIles da un oggetto File? non mi riesce
    Files.move si aspetta dei Path e java.io.File ha un toPath()
  • Re: Rinominare e spostare un file

    andreiiz ha scritto:


    Come faccio a costruirmi un oggetto FIles da un oggetto File?
    Ma non devi costruire un oggetto Files! Il metodo che vuoi usare (Files.move) è un metodo statico. Quindi lo invochi semplicemente con il nome della classe, scrivendo appunto:
    Files.move (/* argomenti che passi al metodo */);
    Ti ha scritto già @andbin come ottenere Path da File.
  • Re: Rinominare e spostare un file

    Ok ragazzi sono riuscito a fare quello che volevo. Ora però ho un'altra domanda relativa allo stesso problema. In pratica ho una GUI da cui prelvo dei dati tramite le textBox; una volta presi questi dati salvo tutto all'interno di un file che chiameremo result.txt. Utilizzo un printWriter per scrivere tale file.
    Bene ovviamente eclipse mi salva questo file all'interno del workspace, nella cartella relativa al progetto.Ma se io invece volessi che questo file "result.txt" mi fosse salvato direttamente su una cartella del desktop come posso fare? oppure mi andrebbe bene anche spostarlo successivamente dal workspace alla cartella del desktop. Ovviamente Files.move non va bene perchè abbiamo detto prende un path come ingresso, ma io ho solo il printwriter del mio file e inoltre il path di un workspace cambia da pc a pc. Quindi idee su come posso fare?


    EDIT: Ragazzi ho detto una baggianata ovviamente il file result.txt me lo salva nella stessa cartella in cui avvio il programma, quindi mi va già benissimo, problema risolto!
Devi accedere o registrarti per scrivere nel forum
5 risposte