我想以編程方式限制Java中的上傳或下載操作。我將承擔所有我需要做的就是做檢查上載有多快,並插入相應Thread.sleep()
像這樣:限制Java的上傳速度?
while (file.hasMoreLines()) {
String line = file.readLine();
for (int i = 0; i < line.length(); i+=128) {
outputStream.writeBytes(line.substr(i, i+128).getBytes());
if (isHittingLimit())
Thread.sleep(500);
}
}
請問上面的代碼工作?如果沒有,有沒有更好的方法來做到這一點?有沒有描述理論的教程?
這可能會減慢上/下載率。儘管取決於在每次迭代中發送的數據量以及睡眠週期的長度,但可能難以精確限制(即,連接速度將改變但不清楚多少)。爲了更好地進行調整,理論上你會希望減少在每次迭代中發送的數據量(例如從一行到一個字符)以及在限制被打時花費的時間。這應該會導致更頻繁和更精細的調整...不張貼爲答案,因爲我沒有教程,並沒有驗證它。 – gnomed 2011-06-07 20:51:18
另外:使用Reader也不是一個好主意,也不是逐行讀取,因爲您基本上是將字節(UTF-8等)中的數據解碼爲字符,然後重新編碼,取出一些字節,放下其他字節。而是從InputStream中讀取一定數量的字節,發送這些字節,並避免在這裏不需要的解碼/編碼。 – StaxMan 2011-06-07 23:49:20