FTP 経由でファイルの最初の 1k バイトを読み取ることができる非常に単純な関数が必要です。これを MATLAB で使用して最初の行を読み取り、いくつかのパラメーターに従って、最終的に本当に必要なファイルのみをダウンロードしたいと考えています。残念ながら機能しない例をいくつかオンラインで見つけました。ここでは、1 つのファイルをダウンロードしようとしているサンプル コードを提案しています (Apache ライブラリを使用しています)。
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();
}
}
エラーは空で返されるストリームにあります。フォルダー名を間違った方法で渡していることはわかっていますが、どうすればよいかわかりません。私は多くの方法で試しました。
また、URL の Java クラスを次のように試しました。
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();
しかし、InputStream を閉じるとエラーが発生します。
私は間違いなく立ち往生しています。についてのいくつかのコメントは非常に役立ちます!