代码之家  ›  专栏  ›  技术社区  ›  RAS user3094411

实际格式的文件上传下载

  •  0
  • RAS user3094411  · 技术社区  · 15 年前

    我必须编写一个代码,以便在远程计算机上上载/下载文件。但当我上传文件时,新行没有保存,而是自动插入一些二进制字符。另外,我无法将文件保存为实际格式,我必须将其保存为“filename.ser”。我使用Java的序列化反序列化概念。

    事先谢谢。

    1 回复  |  直到 15 年前
        1
  •  1
  •   Andrzej Doyle    15 年前

    你到底是如何传输这些文件的?如果您使用的是 InputStream OutputStream 它们在逐字节级别上工作,因此您最终应该得到一个二进制相等的输出。

    如果您使用的是 Reader Writer ,它们根据某些字符映射将字节转换为字符,然后在保存时执行相反的过程。取决于各种机器的平台编码(如果没有显式地指定字符集,可能还会产生其他效果),最终可能会得到二进制文件中的差异。

    你提到换行这件事让我觉得你在用 Readers 发送字符串(也可能是通过手动添加新行将字符串重新缝合在一起)。如果您希望文件是二进制的,那么将它们作为字节流发送,并按原样存储该流。如果希望它们与给定字符集中的字符串相等,请使用读卡器和编写器,但要显式指定字符集。如果您希望它们在平台默认设置中作为字符串进行传输(不是很有用),那么接受它们不会作为文件进行二进制等效。


    (而且,你的问题确实没有提供太多的信息来解决它。对我来说,它基本上是“我写了一些要做的代码” X 但它不起作用。我哪里出错了?”通过不列出代码,您似乎认为代码是正确的,但同时认识到它不是……)