当前位置: 首页 > 知识库问答 >
问题:

可互换地使用OutputStream、OutputStreamWriter和BufferedWriter

宓英哲
2023-03-14

我正在使用Java(Android)尝试将一个文件上传到web服务器,建议使用HttpURLConnection。我曾经有困难发送数据作为一个POST请求在过去,但成功地实现了几个小时后。这些数据是简单的JSON数据,因此转换不是主要问题,我使用缓冲编写器来实现这个目标。

现在,我希望使用multipart/form-data上传真实的文件,并希望传递不同编码的混合,其中二进制编码是OutputStreamWriter(只接受字符串或char[]args)和BufferedWriter(只允许类似的args)都不支持的。

我将需要向服务器发送二进制和文本数据的混合物,我想知道,什么是最好的方法来做到这一点?

我将需要使用原始OutputStream来发送字节,但是当需要发送char数组时,这会与OutputStreamWriter+BufferedWriter层冲突吗?

或者,也许我应该使用特定的方法将UTF8文本转换为二进制,并使用字节数组发送它?

感谢您提供的任何帮助

共有1个答案

贾骏喆
2023-03-14

我已经决定,对于少量的总字节数(几MB),使用outputstream并将字符串转换为字节数组可能会更容易。

虽然这在内存方面效率更低(应该喜欢缓冲IO),但它要简单得多,尽管应用程序仍然简单,但这是目前的发展方向。

 类似资料:
  • 我正在为一个方法编写测试,该方法为不同的扩展文件返回。 对于返回 对于非压缩文件返回 如何断言OutputStreamWriter包含或?

  • 我有一个简单的流如下: 但Intellij建议我: “filter()”和“map()”可以互换。检查信息:报告流API调用链可以简化。它允许在遍历集合时避免创建冗余的临时对象。例如 collection.stream()→collection.for每个() collection.stream()。 Intellij给出的例子很容易理解,但我不明白为什么它建议我使用。 我查看了的来源,但没有找到

  • 问题内容: 我对为什么Integer和int可以在Java中互换使用感到困惑,即使一个是原始类型,而另一个是对象也是如此? 例如: 要么 问题答案: 发布的文章的前几句话很好地描述了它: 您不能将int(或其他原始值)放入集合中。集合只能容纳对象引用,因此您必须将原始值装箱到适当的包装器类中(在int情况下为Integer)。当您从集合中取出对象时,您将得到放入的Integer。如果需要一个int

  • 主要内容:1 什么是Java OutputStreamWriter,2 Java OutputStreamWriter的构造方法,3 Java OutputStreamWriter的方法,4 Java OutputStreamWriter的例子1 什么是Java OutputStreamWriter OutputStreamWriter 类用于将字符流转换为字节流,使用指定的字符集将字符编码为字节。write() 方法调用编码转换器,该转换器将字符转换为字节。然后,将所得的字节存储在缓冲区中,然

  • 问题内容: 这个问题是由对与in进行比较时提高性能的问题的答案引起的。 该解决方案通过将转换为数组,然后将该数组与对象进行比较。这似乎是从此比较中检索布尔数组的最有效方法。 一位开发人员对此问题的反馈是:“一般而言,这些都不相同。提供一个numpy解决方案通常是特例,不建议这样做。” 我的问题是: 它们可以互换一部分操作吗?我赞赏 提供了更多功能,但我只需要切片和索引等基本功能。 可转换为的运算的

  • 我正在用java创建一个irc客户端。起初,我为每个要连接的通道使用了一个插座,例如: 但是这种方法在某些服务器上不起作用,因为它们声称来自同一个IP的许多连接,这是由于使用了几个实例化的套接字。 所以,我想知道,如何在同一个套接字上使用N InputStreamReader和OutputStreamWriter,防止过度连接到服务器。非常感谢。

  • 我有2个项目。项目A是一个Spring Boot应用程序,主要专注于编辑和更新信息。项目B具有查看信息的方法,我正试图将其用作(A)的依赖项,以最大限度地提高代码重用并最大限度地减少修复任何错误/多次进行任何改进的努力。 我希望能够让我的控制器和模板正确地动态找到正确的模板。 项目A正确地利用了项目B依赖项中包含的任何服务/DAO等,但我在前端处理方面遇到了问题。在过去,我有一个没有前端的项目使用

  • 问题内容: 我正处于开发阶段,在那里我有两个模块,从一个模块我得到的输出为a OutputStream,第二个模块仅接受InputStream。您是否知道如何转换OutputStream为InputStream可以连接这两部分的方式(反之亦然,我是说真的) 谢谢 问题答案: 是您向其中写入数据的地方。如果某个模块公开了,则期望在另一端读取一些内容。 另一方面,暴露出的信息表示您需要侦听此流,并且会