Ho bisogno di una funzione molto semplice che mi permetta di leggere i primi 1k byte di un file tramite FTP. Voglio usarlo in MATLAB per leggere le prime righe e, in base ad alcuni parametri, per scaricare solo i file che ho davvero bisogno alla fine. Ho trovato alcuni esempi online che purtroppo non funzionano. Qui sto proponendo il codice di esempio in cui sto cercando di scaricare un singolo file (sto usando le librerie di Apache).Leggere i primi byte di un file
FTPClient client = new FTPClient();
FileOutputStream fos = null;
try {
client.connect("data.site.org");
// filename to be downloaded.
String filename = "filename.Z";
fos = new FileOutputStream(filename);
// Download file from FTP server
InputStream stream = client.retrieveFileStream("/pub/obs/2008/021/ab120210.08d.Z");
byte[] b = new byte[1024];
stream.read(b);
fos.write(b);
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (fos != null) {
fos.close();
}
client.disconnect();
} catch (IOException e) {
e.printStackTrace();
}
}
l'errore è nel flusso che viene restituito vuoto. So che sto passando il nome della cartella in modo sbagliato, ma non riesco a capire come devo fare. Ho provato in molti modi.
Ho anche provato con le classi Java del URL come:
URL url;
url = new URL("ftp://data.site.org/pub/obs/2008/021/ab120210.08d.Z");
URLConnection con = url.openConnection();
BufferedInputStream in =
new BufferedInputStream(con.getInputStream());
FileOutputStream out =
new FileOutputStream("C:\\filename.Z");
int i;
byte[] bytesIn = new byte[1024];
if ((i = in.read(bytesIn)) >= 0) {
out.write(bytesIn);
}
out.close();
in.close();
ma sta dando un errore quando sto chiudendo l'InputStream in!
Sono decisamente bloccato. Alcuni commenti sarebbero molto utili!
Benvenuti a StackOverflow! Non è necessario aggiungere tag al tuo titolo, esiste un sistema di tag per questo. Per ulteriori informazioni, leggi http://meta.stackexchange.com/q/19190/147072. Inoltre, non è necessario aggiungere "Grazie" o il tuo nome alla fine, tutti sono grati per l'aiuto e il tuo nome viene visualizzato nella scheda del personaggio in basso a destra di ogni domanda e risposta che crei. – Patrick