java nio大文件传输,但是传过去的文件内容有乱码,求高手解答

java nio大文件传输,但是传过去的文件内容有乱码,求高手解答,第1张

tempString = new String(bs, 0, rSize)

这句有2个问题:

1、文件内数据是以什么字符编码存进去的,如果是GBK,那就得

new String(bs, 0, rSize, "GBK")

否则有可能数据不能正常转换而数据丢失

不写则使用缺省编码,这个可以通过System.getProperty("file.encoding")查看。

相应的line.getBytes也可能会遇到同样的问题

2、如果你读进来的最后一个字节正好是某个字符的前8位,那你这new String肯定会出错,不论编码是否正确设置,譬如汉字"我"在GBK里2个字节,你正好只读出前一个字节,你就不可能正确了

建议:直接读入byte数组然后查找并删除'\n',而不用转换成字符串

要将Java文件上传到指定服务器,可以使用以下步骤:

使用Java中的Socket类或Java NIO(New IO)库来建立网络连接。

在连接上发送文件,可以使用Java中的FileInputStream或FileReader类从本地文件系统读取文件内容,然后使用OutputStream或Writer类将文件内容写入网络连接。

在服务器端,使用Java中的ServerSocket类或Java NIO库来接收网络连接。

在服务器端,读取网络连接中的文件内容,可以使用Java中的InputStream或Reader类从网络连接中读取文件内容,然后使用Java中的FileOutputStream或FileWriter类将文件内容写入服务器本地文件系统。

关闭网络连接和文件流。

需要注意的是,要确保服务器端有足够的权限来访问文件系统,并且要正确处理文件名和路径,以避免安全问题和文件冲突。

Java NIO的创建目的是为了让Java程序员可以实现高速I/O而无需编写自定义的本机代码。Java NIO的高效得益于其两大"助手":Channel和Buffer。NIO将最耗时的I/O *** 作(即填充和提取缓冲区)转移回 *** 作系统,因而可以极大地提高速度。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12039659.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存