Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java-按块读取文件?_Java_Sockets_Io_Inputstream - Fatal编程技术网

Java-按块读取文件?

Java-按块读取文件?,java,sockets,io,inputstream,Java,Sockets,Io,Inputstream,我知道如何按字节读取文件,但找不到如何按字节块读取文件的示例。我有一个字节数组,我想读取512字节的文件并通过套接字发送它们 我尝试读取文件的总字节数,然后减去512字节,直到得到一个小于512字节的块,并发出EOF和传输结束的信号 我正在尝试实现一个TFTP,其中数据以512字节的块发送 无论如何,请举个例子。使用InputStream可以读取给定大小的数组,并将读取限制在此大小 阅读此处:您可以从输入流中使用适当的Read()方法,例如,支持Read(byte[])来读取字节块 类似于:如果

我知道如何按字节读取文件,但找不到如何按字节块读取文件的示例。我有一个字节数组,我想读取512字节的文件并通过套接字发送它们

我尝试读取文件的总字节数,然后减去512字节,直到得到一个小于512字节的块,并发出EOF和传输结束的信号

我正在尝试实现一个TFTP,其中数据以512字节的块发送


无论如何,请举个例子。

使用
InputStream
可以读取给定大小的数组,并将读取限制在此大小


阅读此处:

您可以从输入流中使用适当的
Read()
方法,例如,支持
Read(byte[])
来读取字节块

类似于:如果要保证512字节的块(构造函数采用块大小参数),可能需要将输入流包装在
BufferedInputStream


你。。。一次读取512字节

char[] myBuffer = new char[512];
int bytesRead = 0;
BufferedReader in = new BufferedReader(new FileReader("foo.txt"));
while ((bytesRead = in.read(myBuffer,0,512)) != -1)
{
    ...
}

字节缓冲不是更合适吗?我给你买杯啤酒。干杯,伙计!
char[] myBuffer = new char[512];
int bytesRead = 0;
BufferedReader in = new BufferedReader(new FileReader("foo.txt"));
while ((bytesRead = in.read(myBuffer,0,512)) != -1)
{
    ...
}