所以我将一个文件读入一个字节数组,然后我将它分解成块并使用 UDP 通过网络发送它。
Path path = Paths.get("files_upload/music.mp3");
byte[] objectBytes = Files.readAllBytes(path);
在服务器上,我将所有块读入缓冲区,最终得到与byte[] objectBytes
客户端相同的结果。现在我想使用原始文件名将文件写入磁盘,在这种情况下是 music.mp3。那么如何从字节数组中获取文件名呢?
所以我将一个文件读入一个字节数组,然后我将它分解成块并使用 UDP 通过网络发送它。
Path path = Paths.get("files_upload/music.mp3");
byte[] objectBytes = Files.readAllBytes(path);
在服务器上,我将所有块读入缓冲区,最终得到与byte[] objectBytes
客户端相同的结果。现在我想使用原始文件名将文件写入磁盘,在这种情况下是 music.mp3。那么如何从字节数组中获取文件名呢?
字节数组不包含文件名。您必须单独发送。您可以在路径上调用 getFileName,然后在结果字符串上使用 getBytes() 将其转换为字节数组。
String fileName = path.getFileName();
byte[] fileNameBytes = fileName.getBytes();
然后,您可以先发送它,然后在另一端阅读。请注意,这不会包含整个路径,仅包含文件名(在您的情况下为music.mp3)。
顺便问一下,您确定要使用 UDP 吗?如果在传输数据时丢失一两个数据包怎么办?您如何在服务器上检测到它?