OK,所以我一直試圖用FileInputReader.read()讀取一個(「任意」)二進制文件到一個byte []數組......但是無論文件長度如何,它一次只能讀取5個字節。 .. (順便說一句即時使用UDP來發送陣列/文件)爲什麼FileInputReader.read()每次只讀取5個字節(Java)?
byte[] array_bytes = new byte[1024];
while((nread=file.read(array_bytes))!=-1){
number_bytesread += array_bytes.length;
socket_udp.send(send_package);
count += 1;
}
-send_package是使用array_bytes發送消息
我試圖使用讀功能的DatagramPacket的(字節[] ,offset,lenght),但是如果我把長度超過5,就會發生這個錯誤,在第一次讀取時,即使認爲文件肯定大於5個字節:
nread=file.read(array_bytes, 0, 1024);
無需補償,因爲我在閱讀後立即發送。
Exception in thread "main" java.lang.IndexOutOfBoundsException
at java.io.FileInputStream.readBytes(Native Method)
at java.io.FileInputStream.read(FileInputStream.java:272)
at udp_server2.UDP_Server2.Send_Udp(UDP_Server2.java:122)
at udp_server2.UDP_Server2.main(UDP_Server2.java:77)
Java Result: 1
在此先感謝您的幫助, 安德烈
該行確實證明數組的長度確實是5 .. number_bytesread + = array_bytes.length;關於命名約定,它是我第一次編寫Java,而且我第一次使用Stackoverflow(這個回答的確很好,......)。我使用c命名約定似乎這是我用來編碼的唯一語言..謝謝生病嘗試瞭解爲什麼byte [] array_enviar = new byte [1024];有警告「價值永遠不會被使用」 – Andre
@Andre:這表明你沒有使用這個變量 - 你正在使用一個不同的變量。仔細檢查一切,包括套管!在命名慣例方面,學習和遵循新語言習慣的一個好處是,它強化了它是一種不同的語言和不同的習語等的信息。 –