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::Server中的客户机服务器程序未逐行读取文件中的文本_Java_Sockets - Fatal编程技术网

Java::Server中的客户机服务器程序未逐行读取文件中的文本

Java::Server中的客户机服务器程序未逐行读取文件中的文本,java,sockets,Java,Sockets,我正在尝试将一个音频文件从服务器传输到客户端,并将其写入另一个文件。服务器正在从客户端读取文件,但它正在不断读取文件内容,忽略新行。例如,有一个类似“我在做客户机-服务器程序”的文本,文件的下一行是“Java”。服务器读取为“我正在进行客户机-服务器编程Java”。 我的问题是如何逐行阅读内容 我的代码如下 * 服务器 你的描述还不清楚,但我怀疑这就是问题所在: while((str = br.readLine()) != null) // reading line-by-line from

我正在尝试将一个
音频文件
从服务器传输到客户端,并将其写入另一个文件。
服务器
正在从客户端读取文件,但它正在不断读取文件内容,忽略新行。例如,有一个类似“我在做客户机-服务器程序”的文本,文件的下一行是“Java”。服务器读取为“我正在进行客户机-服务器编程
Java
”。 我的问题是如何逐行阅读内容

我的代码如下

*

服务器


你的描述还不清楚,但我怀疑这就是问题所在:

while((str = br.readLine()) !=  null) // reading line-by-line from file
{
    sb.append(str);//append to stringBuffer sb
}
readLine()
的返回值不包含换行符。。。而且您没有将一个添加到
StringBuilder
中。因此,如果您收到以下行:

  • “第一”
  • “第二”
  • “第三”
结果将是“第一第二第三”。您只需要自己添加一个适当的换行符:

// Or whatever line break you want
String lineBreak = System.getProperty("line.separator");
while((str = br.readLine()) != null)
{
    sb.append(str);
    sb.append(lineBreak);
}

请注意,如果您真的试图像这样传输音频文件,您不应该这样做-音频文件是二进制数据,因此您应该只从
InputStream
读取;根本不要使用
读卡器,因为它是为文本数据设计的。

您的描述很不清楚,但我怀疑这就是问题所在:

while((str = br.readLine()) !=  null) // reading line-by-line from file
{
    sb.append(str);//append to stringBuffer sb
}
readLine()
的返回值不包含换行符。。。而且您没有将一个添加到
StringBuilder
中。因此,如果您收到以下行:

  • “第一”
  • “第二”
  • “第三”
结果将是“第一第二第三”。您只需要自己添加一个适当的换行符:

// Or whatever line break you want
String lineBreak = System.getProperty("line.separator");
while((str = br.readLine()) != null)
{
    sb.append(str);
    sb.append(lineBreak);
}

请注意,如果您真的试图像这样传输音频文件,您不应该这样做-音频文件是二进制数据,因此您应该只从
InputStream
读取;根本不要使用
读取器
,因为它是为文本数据设计的。

音频文件中的新行?请编辑代码的缩进并删除一些连续的空白行。您让人们越容易阅读您的代码,您就越有可能得到答案。音频文件中的新行?请编辑代码的缩进并删除一些连续的空行。你越容易让人们阅读你的代码,你就越有可能得到答案。谢谢你宝贵的答案。我目前正在传输一个文本文件。@user88368:那为什么还要说你正在传输一个音频文件呢?请记住,如果您将代码结构为只传输任何二进制数据,那么它也将处理文本文件…谢谢您宝贵的回答。我目前正在传输文本文件。@user88368:那么为什么还要说您正在传输音频文件呢?请记住,如果您将代码结构为只传输任何二进制数据,那么也将处理文本文件。。。