gpt4 book ai didi

Java 从文件中读取并使用 DataOutputStream 发送

转载 作者:行者123 更新时间:2023-11-29 03:21:14 28 4
gpt4 key购买 nike

我正在尝试编写一个迷你 FTP 应用程序,它从文件中读取二进制数据并将其发送到客户端。我的程序通常不会按预期运行,通常会发送文件,但不会完全发送(即发送文本文件,内容为空白)。我认为这可能是因为我使用文件阅读器来读取该行,尽管我不太明白为什么这会成为一个问题。相关代码如下:

File file = new File(rootDirectory, name);
int filenum = (int)file.length();
long filelen = file.length();
System.out.println("File is: " + filenum + " bytes long");
socketOut.writeLong(filelen);
fileIn = new BufferedReader(new FileReader(file));
System.out.println("Sending: " + name);

while((line = fileIn.readLine()) != null){
socketOut.writeBytes(line);
socketOut.flush();
}

最佳答案

问题在于读者/作者读取文本(与 Input~/OutputStreams 相对)。 FileReader 内部使用默认的操作系统编码。这种转换永远不会对二进制文件进行。另请注意,readLine 会丢弃行结尾(\r\n\n\u0085)。从 Java 7 开始,你可以做

Files.copy(file.toPath(), socketOut);

而不是 wile 循环。

关于Java 从文件中读取并使用 DataOutputStream 发送,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23530127/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com