inputstream

Mattepuffo's logo
Convertire String in InputStream in Java

Convertire String in InputStream in Java

Vediamo al volo un piccolo snippet di codice Java che ci permette di convertire un oggetto String (che rappresenta una stringa) in InputStream.

Dopo la conversione useremo un BufferedReader per leggere l'InputStream.

Questa cosa mi è servita in un mio progetto, anche se non ricordo bene dove; giusto per dirvi che ance se sembra una cosa insensata, visto l'esempio semplicistico, in verità può capitare di dover eseguire questa operazione.

Mattepuffo's logo
FTP upload con Java

FTP upload con Java

Oggi vediamo come fare l'upload di file su un server FTP in Java.

Per la conessione al server useremo le librerie Apache Net Commons (che potete scaricare da qua).

Questa libreria è molto potente ed ha molti strumenti integrati.

Noi ne vedremo una piccola parte ovviamente.

Scaricate la libreria e aggiungete il JAR al vostro progetto.

Mattepuffo's logo
Download file in Android

Download file in Android

Quello che vediamo oggi è come scaricare file in Android dalla rete.

Prima di tutto i permessi da mettere nell'AnrdoidManifest:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

Come vedete due sono quelli che ci servono come minimo: quello legato a internet per la connessione, e quello per salvare i file sul dispositivo.

Nella nostra Activity:

public class MainActivity extends Activity {
    
    private String path = Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        new DownloadDatas().execute("");
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
    
    public class DownloadDatas extends AsyncTask  {

        @Override
        protected Object doInBackground(Object... params) {
            try {
                DownloadFile.downlad(path + "file.sqlite");
            } catch (IOException e) {
            }
            return null;
        }
      
    }

}

Come prima cosa, notiamo che qui impostiamo il path che punta alla directory interna al dispositivo, dove salvare i file.

Mattepuffo's logo
Copiare file con Java

Copiare file con Java

Che io sappia Java non ha di dfeault un metodo per copiare file.

Se diamo uno sguardo alla classe File, infatti, troviamo tantissimi metodi utili per creare, listare, "controllare, rinominare,....

Ma non un metodo diretto per copiarli.

I motivi per voler copiare un file possono essere molti.

Nel mio caso è quello di creare un file di backup del mio piccolo database SQLite portatile.

In sostanza pgni volta che aggiungo, modifico o cancello un record voglio creare una copia del file sqlite.

Per questo mi sono creato una classe con un metodo statico che prende il contenuto del file originale e lo travasa nel secondo.

Mattepuffo's logo
Leggere file da url con Java

Leggere file da url con Java

Vediamo un semplice codice che riesce a leggere il contenuto di file usando un url usando Java.

Non so che utilità possa avere e quando usarlo.

Però magari qualche idea può sempre venire.

Io l'ho usato dentro un programmino per riempire una JTextArea ad esempio...

Mattepuffo's logo
Invio di file tramite socket in Java (2nd edition)

Invio di file tramite socket in Java (2nd edition)

In questo articolo avevo già parlato di come trasferire file tramite socket in Java.

Il problema però è che funziona solo se sia il client che il server stanno sulla stessa macchina.

Questo perchè ho fatto uso di oggetti File che sono solo una rappresentazione di un file o directory sul pc, ma che non sanno nulla circa il lror contenuto.

Se invece server e client devono stare su macchine diverse bisogna cambiare un pò la logica.

In sostanza il client deve leggere e inviare il file byte per byte; il server legge tutti i byte e li salva sul pc.

Non si può quindi usare File.

Questo è il client:

import java.io.FileInputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;

public class Client {

private final String HOST = "host";
private final int PORT = 9977;

public static void main(String[] args) {
Client c = new Client();
c.sendFile();
}

private void sendFile() {
try {
Socket socket = new Socket(HOST, PORT);
FileInputStream fis = new FileInputStream("path/to/file");
OutputStream out = socket.getOutputStream();
byte[] buf = new byte[1024];
int read;
while ((read = fis.read(buf)) != -1) {
out.write(buf, 0, read);
}
fis.close();
out.close();
socket.close();
} catch (UnknownHostException ex) {
System.out.println(ex.getMessage());
} catch (IOException ex) {
System.out.println(ex.getMessage());
}
}
}

In pratica usiamo FileInputStream per leggere il contenuto del file, e OutputStream per inviare i byte.