我想以编程方式限制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