Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2014
    residenza
    Padova
    Messaggi
    361

    Trovare carattere "illegale" in un path

    Ciao a tutti, come da titolo sto cercando un modo semplice per trovare un eventuale carattere "illegale" (non accettato dal sistema operativo) in un path specificato dall'utente che desidera salvare un file.
    Cercando in rete per ora sono arrivato a questa soluzione:

    codice:
    public boolean saveFile(String path,String content)
        {
    try
    { Paths.get(path); PrintWriter p=new PrintWriter(new FileWriter(path)); p.print(content); p.flush(); p.close(); return true; } catch(java.nio.file.InvalidPathException ipe) { char invalid=path.charAt(ipe.getIndex()); if(invalid=='<'||invalid=='>')System.out.print("\nIl carattere \""+invalid+"\" non puo' essere usato nel nome del file !"); else System.out.print("\nIl carattere <"+invalid+"> non puo' essere usato nel nome del file !"); } catch(IOException ioe){ ioe.printStackTrace(); } return false; }
    Le domande che mi pongo sono due:

    - E' un sistema affidabile indipendentemente dal sistema operativo o si può fare di meglio?
    - Assumendo di non voler mandare un messaggio d'errore all'utente richiedendo un nuovo path, ma di volere invece correggere "automaticamente" il nome del file, avrebbe senso inserire un ciclo in cui si controlla la correttezza del nome (quindi solo la prima riga del blocco try) e nel caso siano presenti caratteri illegali sostituirli man mano nel blocco catch con un carattere permesso?

    Grazie dell'attenzione

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Alla domanda 1 potrei rispondere di sì... dovrei fare delle verifiche.
    Alla domanda 2 direi assolutamente no. Meglio (molto meglio) mandare un messaggio all'utente. Non puoi "tentare di indovinare" il percorso modificando i caratteri non validi con altri selezionati in modo assolutamente arbitrario. Quel che ne esce (ben che ti vada) è un percorso inesistente sulla macchina dell'utente. Mal che ti vada è un percorso esistente che se usato va a fare danni da qualche altra parte al sistema.


    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
    Oct 2014
    residenza
    Padova
    Messaggi
    361
    Ciao e grazie per la risposta

    Da come mi sono spiegato la seconda domanda è poco precisa, provo a specificare meglio il contesto.

    Una volta stabilito che quel blocco try catch sia un metodo valido per verificare la correttezza del path inserito volevo sapere se sia buono o meno l'inserimento del try catch in un ciclo che trovi ad una ad una le InvalidPathException, rispetto magari al trovare (in che modo non saprei) tutti i caratteri non consentiti dal sistema operativo ed effettuare un replaceAll() per ogni carattere, o utilizzare un altro metodo ancora.

    La prima domanda era quindi generale e relativa ad ogni path, nello scenario della seconda domanda invece l'utente non decide il path, la cartella è già esistente e specificata, mentre il nome del file viene composto in base al testo di due campi inseriti dall'utente.
    Il file quindi non dovrebbe mai creare problemi in termini di esistenza del percorso, ma solo essere salvato con un nome che sostituisce ad esempio il carattere % a tutti i vari ? " < > : etc.

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.