Potrzebuję bardzo prostej funkcji, która pozwala mi odczytać pierwsze 1k bajtów pliku przez FTP. Chcę go użyć w MATLAB-u, aby przeczytać pierwsze wiersze i, zgodnie z niektórymi parametrami, pobrać tylko te pliki, których naprawdę potrzebuję w końcu. Znalazłem kilka przykładów online, które niestety nie działają. Tutaj proponuję przykładowy kod, w którym próbuję pobrać jeden plik (używam bibliotek Apache).Przeczytaj pierwsze bajty pliku
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();
}
}
błąd jest w strumieniu, który jest zwracany pusty. Wiem, że przekazuję nazwę folderu w niewłaściwy sposób, ale nie mogę zrozumieć, jak mam to zrobić. Próbowałem na wiele sposobów.
Ja również próbowałem z klas Javy adres URL jako:
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();
ale daje błąd, gdy jestem zamykającą InputStream w!
Zdecydowanie utknąłem. Niektóre komentarze na temat będą bardzo przydatne!
Witamy StackOverflow! Nie ma potrzeby dodawania tagów do tytułu, istnieje system tagów do tego. Więcej informacji można znaleźć na stronie http://meta.stackexchange.com/q/19190/147072. Nie musisz też dodawać "podziękowania" lub nazwiska, wszyscy są wdzięczni za pomoc, a Twoje nazwisko jest wyświetlane w arkuszu postaci w prawym dolnym rogu każdego pytania i odpowiedzi, które tworzysz. – Patrick