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:这表明你没有使用这个变量 - 你正在使用一个不同的变量。仔细检查一切,包括套管!在命名惯例方面,学习和遵循新语言习惯的一个好处是,它强化了它是一种不同的语言和不同的习语等的信息。 –