In tutti gli esempi visti finora abbiamo sempre utilizzato le funzioni interne di Processing per disegnare qualcosa sullo schermo. È possibile, ovviamente, caricare all’interno dei nostri sketch file esterni in vari formati come, ad esempio, font, immagini, file vettoriali, suoni e altro.

Dati gli argomenti che affronteremo a breve, è importante capire come effettuare questa operazione nel modo corretto per evitare di incorrere in problemi soprattutto quando distribuiamo i nostri programmi ad altre persone.

La prima regola fondamentale che dobbiamo sempre tenere a mente è che prima di poter essere utilizzati, i file devono essere caricati dal nostro sketch. Questo avviene ogni volta che lanciamo il programma.

Processing è in grado di caricare file che:

  • si trovano all’interno della cartella dello sketch
  • si trovano in una cartella qualsiasi sul computer
  • si trovano su un server accessibile via internet.

Ciascuna di queste situazioni presenta dei pro e dei contro e non esiste una soluzione che possa andare bene in tutti i casi. La prima opzione è, però, quella più comune.

Caricare file esterni in Processing

Tutti i file esterni sono generalmente inseriti in una cartella chiamata data che troviamo all’interno della cartella dello sketch.

Aggiungere file dal menu

Cliccando sul menu Sketch > Add File… si aprirà una finestra di dialogo dove andremo a selezionare il file da inserire.

Drag and drop

La seconda opzione, forse la più comoda, permette di trascinare uno o più file direttamente nella finestra di processing.

Processing drag and drop

Aggiunta manuale

Oppure è possibile aggiungere i file manualmente aprendo la cartella dello sketch dal menu Sketch > Show Sketch Folder, scorciatoia ⌘+K, creando una cartella data (se non esiste) e copiando direttamente i file all’interno di essa.

Processing aggiungere file manualmente

Consigli

Quando andremo a caricare il o i file è buona regola specificare l’estensione, ad esempio “file.txt” e fare attenzione all’uso delle lettere maiuscole: se il file si chiama immagine.jpg provare a caricare Immagine.jpgimmAgine.jpgimmagine.JPG genererà sempre un errore.

Per rendere il contenuto del file disponibile all’interno dell’interno programma, normalmente si crea una variabile globale al di fuori dei cicli di setup()draw() come avevo spiegato qui nel paragrafo scopo delle variabili.

Unisciti alla discussione

12 commenti

  1. Grazie per la risposta. Forse dovrei trasformare la data in numero così da potere selezionare il file che ha il numero più grande. Che ne pensi?

    1. La data è già un numero quindi non c’è bisogno di trasformarla in nulla di diverso. Dopo una breve ricerca credo che il modo migliore per ottenere il risultato e non appesantire troppo il codice su Processing sia fare così (prendo come riferimento l’esempio che ti ho linkato nel commento precedente):

      All’inizio del codice aggiungi:


      import java.util.Date;
      import java.util.Comparator;
      import java.util.Arrays;

      Dopodiché subito dopo la riga dove viene creato l’array con i file File[] files = listFiles(path); e prima del ciclo for che estrae le informazioni sui file aggiungi il seguente codice:


      Arrays.sort(files, new Comparator() {
      public int compare(File f1, File f2) {
      return Long.valueOf(f2.lastModified()).compareTo(f1.lastModified());
      }
      });

      Ho fatto una prova veloce ma sembra funzionare senza problemi. Potresti avere problemi di prestazione in base al numero di file che devi comparare.

      Con questa funzione l’array files viene ordinato con i file più nuovi al primo posto quindi ti basta, poi, pescare il primo elemento dell’array per essere sicuro di leggere il più recente.

  2. Ciao Federico, ho un dubbio sull’utilizzo delle librerie da caricare:
    import java.io.*;
    import java.io.BufferedWriter;
    import java.io.FileWriter;
    import java.io.File;

    se carico la prima è ancora necessario caricare le altre 3?
    Grazie anticipatamente

    1. Ciao Angelo, caricando la prima non è necessario aggiungere le altre tre e non vai incontro a problemi/miglioramenti di performance. Di solito, però, si preferisce essere specifici e caricare solo le librerie necessarie (evitando, quindi di mettere * e scrivendo una alla volta tutte le librerie necessarie al tuo programma per funzionare).

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.