我想問問有沒有人知道有關FTP的任何Java 7問題?我已經使用了Sun Net和Apache Commons Net庫,並且都在Java 6上按預期執行。但是,當我將開發環境(Eclipse)切換到1.7時,相同的操作執行速度非常慢(約爲4.5到8KB/s),這些都是本地主機服務器和局域網內的另一臺服務器。爲什麼ftp上傳速度慢java 7
我嘗試了緩衝流,字節到字節的傳輸,關閉Nagle算法,並使用Apache便捷方法storeFile(),後者最終執行加速本地主機,但又放慢了爬行速度在遠程服務器上。我還設置了所有機器來關閉有狀態的FTP過濾。
InputStream is = null;
OutputStream os = null;
try {
is = new BufferedInputStream(prepareInputStream(data));
os = new BufferedOutputStream(prepareOutputStream(data));
if (is == null || os == null) {
log.error("Can't build connection");
return;
}
byte[] buf = new byte[4096];
int c = 1;
while (c > 0) {
c = is.read(buf);
if (c > 0)
os.write(buf, 0, c);
data.incrCurrentPosition();
fireStateChanged(data);
}
data.incrCurrentPosition();
} catch (IOException e) {
log.error(e.getMessage(), e);
setEnabled(false);
} catch (Exception e) {
log.error(e.getMessage(), e);
} finally {
if (is != null) {
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (os != null) {
try {
os.close();
} catch (IOException e) {
e.printStackTrace();
}
}
可以看出,這是非常標準的實現代碼。再次,在Java 6中,事情壓縮得非常快。在Java 7中,Sun和Apache Commons庫的速度減慢了10到20倍。使用像FileZilla這樣的FTP客戶端確認FTP運行正常,所以我認爲它確實與Java 7有關。儘管我可以在網上找到有關問題的任何提及,但大部分情況下,我看到的內容都是關於Java 7和Windows 7防火牆發生衝突。
預先感謝您提供的任何見解。
問:「我認爲它確實與Java 7有關」。答:我真的認爲你可能是對的。嘗試編譯Java 6,並嘗試在JRE6和JRE7上運行* same * .class。我敢打賭你可能會證實你的理論:) – paulsm4
'data'類是什麼? – DWright
對不起,我錯過了這個DWright。我試圖從哈希映射對象到字符串的任意數據類型,只是爲了看看它是否確實是原因,但它們都是相同的,即在Java 6中速度很快,在Java 7中速度很慢。 –