我正在尝试通过URLConnection上传文件,但是我需要将其读取/写入为二进制文件,而无需进行任何编码更改。
所以我试图从读取byte[]数组FileInputStream,但是现在我有一个问题。PrintWriter我用于输出到服务器的对象不允许我执行操作writer.write(content)(content类型为byte[])。我怎样才能解决这个问题?还是有另一种快速将二进制数据从a复制FileInputStream到a的方法PrintWriter?
byte[]
FileInputStream
PrintWriter
writer.write(content)
content
谢谢
Writer对象(包括PrintWriter)专门用于输出字符数据。听起来您想要这里OutputStream而不是Writer这里。
Writer
OutputStream
你PrintWriter是哪里人 如果它是通过将某种形式OutputStream的“ OutputStreamWriter和”换成“然后再用”包裹而成的PrintWriter,那么您应该使用原始的原始write(byte[] b)方法OutputStream,而不是尝试使用Writer。
OutputStreamWriter
write(byte[] b)
如果要混合使用字符输出和字节输出,则可能需要使用String.getBytes()。看看这个例子:
String.getBytes()
OutputStream o = this.conn.getOutputStream(); // Based on your comment String s = "Hello, world!"; byte[] b = ...; // These are the raw bytes that you want to write o.write(s.getBytes("UTF-8")); o.write(b);
(当然,只有在读取输出的系统知道您正在写入字符和原始字节的混合并且知道如何处理发送的混合数据时,这才起作用。)