Мой код должен прочитать часть данных из каждого загружаемого файла, обычно около 100 000 байтов.Это хорошо работает для локальных файлов, но может быть очень медленным в моей сети Wi-Fi, хотя моя сеть кажется адекватной (но не очень быстрой)
Итак, я создал этот простой тест:
public void testDataCopySpeed() throws Exception
{
File file = new File("Z:\\TestFile.mp3");
System.out.println("start:"+new Date());
FileChannel fc = new FileInputStream(file).getChannel();
ByteBuffer bb = ByteBuffer.allocate(500000); //1/2 MB
fc.read(bb);
System.out.println("end:"+new Date());
}
Для локального файла потребуется меньше секунды, но для сетевого файла - более минуты.
Итак, я попытался проверить скорость своей сети, я не вижу, как проверить Wi-Fi, но я проверил интернетСкорость загрузки / скачивания с использованием http://myspeedtestonline.com/ при условии, что это будет медленнее, чем в моей реальной сети Wi-Fi.Это дало мне:
Скорость загрузки: 512 КБ / с Скорость загрузки: 40 КБ / с
, и я запустил тот же тест на другом компьютере, и он дал похожую скорость
Как это можно загрузить 1/2 МБ данных в одну секунду, но это может занять минуту, чтобы скопировать 1/2 МБ данных из одного файла в Java, файл размещен на NAS.?
РЕДАКТИРОВАТЬ: Итак, у меня есть несколько хороших ответов ниже, и я действительно хочу знать, каков наилучший способ получить доступ к первым 100 000 байтов из набора файлов для доступа только для чтения, который будетработать для локальных и сетевых файлов, или я должен иметь другой код в зависимости от того, нет ли он в сети.Исправление сети на самом деле не является решением, возможно, я смогу исправить свою сеть, но это программное обеспечение должно работать на любом компьютере, у многих моих клиентов может не быть оптимальных сетей, и у них не будет навыков для устранения проблем с сетью.