相关疑难解决方法(0)

如何将OutputStream转换为InputStream?

我在开发阶段,我有两个模块,从一个我得到输出作为OutputStream第二个,只接受InputStream.你知道如何转换OutputStreamInputStream(而不是相反,我是说真的这样),我将能够这两部分连接?

谢谢

java inputstream outputstream

308
推荐指数
7
解决办法
29万
查看次数

将文件编码为base64时内存不足

使用Apache commons的Base64

public byte[] encode(File file) throws FileNotFoundException, IOException {
        byte[] encoded;
        try (FileInputStream fin = new FileInputStream(file)) {
            byte fileContent[] = new byte[(int) file.length()];
            fin.read(fileContent);
            encoded = Base64.encodeBase64(fileContent);
        }
        return encoded;   
}


Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space
    at org.apache.commons.codec.binary.BaseNCodec.encode(BaseNCodec.java:342)
    at org.apache.commons.codec.binary.Base64.encodeBase64(Base64.java:657)
    at org.apache.commons.codec.binary.Base64.encodeBase64(Base64.java:622)
    at org.apache.commons.codec.binary.Base64.encodeBase64(Base64.java:604)
Run Code Online (Sandbox Code Playgroud)

我正在为移动设备制作小应用程序.

java base64

15
推荐指数
3
解决办法
3万
查看次数

使用PipedInputStream java编写end dead exception

在以下情况下发生写入结束异常:两个线程:

A: PipedOutputStream put = new PipedOutputStream();
   String msg = "MESSAGE";
   output.wirte(msg.getBytes());
   output.flush();

B: PipedInputStream get = new PipedOutputStream(A.put);  
   byte[] get_msg = new byte[1024];
   get.read(get_msg);
Run Code Online (Sandbox Code Playgroud)

情况如下:A和B同时运行,A写入管道,B读取它.B只是从管道中读取并清除了该管道的缓冲区.然后A不会在未知的时间间隔内将msg写入管道.但是,在某一时刻,B再次读取管道并java.io.IOException: write end dead发生,因为管道的缓冲区仍然是空的.而且我不想睡眠()线程B等待A写管道,这也是不稳定的.如何避免这个问题并解决它?谢谢

java multithreading ioexception

9
推荐指数
2
解决办法
8227
查看次数

如何将Java OutputStream上载到AWS S3

我在内存中创建PDF文档作为OutputStreams.这些应该上传到S3.我的问题是,它无法创建一个PutObjectRequestOutputStream(直接按这个线程在AWS开发论坛).我aws-java-sdk-s3Dropwizard应用程序中使用v1.10.8 .

到目前为止我能看到的两个解决方法是:

  1. 复制OutputStream到a InputStream并接受使用两倍量的RAM.
  2. 管道OutputStream到一个InputStream并接受额外线程的开销(参见这个答案)

如果我找不到更好的解决方案,我会选择#1,因为在我的设置中,它看起来好像能够比线程/ CPU更容易买得起额外的内存.

到目前为止,我是否还有其他任何可能更有效的方式来实现这一目标?

编辑:OutputStreams为ByteArrayOutputStream小号

java inputstream outputstream amazon-s3 amazon-web-services

9
推荐指数
1
解决办法
7334
查看次数

一步将数据从 Postgres DB 复制到 AWS S3

我有一个将选定数据从 Postgres 移动到 Amazon S3 的用例。这应该一步完成。我正在编写一个java程序来完成这个任务。

我找到了一种分两步复制数据的方法。我使用 CopyManager 库和 copyOut 方法将数据获取到本地。之后,我使用 Java 将相同的文件移至 S3 中。

postgres 代码将数据获取到我的本地

CopyManager copyManager = new CopyManager((BaseConnection) con);
FileWriter fileWriter = new FileWriter("file.csv");
copyManager.copyOut("COPY (SELECT stmt) TO STDOUT WITH DELIMITER '\t' CSV HEADER", fileWriter);
Run Code Online (Sandbox Code Playgroud)

AWS代码从本地转移到S3

AmazonS3 conn = new AmazonS3Client(credentials);
conn.setEndpoint("xxx.com");
conn.putObject(
            bucket1.getName(),
            "request.json",
            new File("file.csv")
    );
Run Code Online (Sandbox Code Playgroud)

我希望它会一次性发生,而不是写入文件然后将文件移动到 S3。

java postgresql amazon-s3

6
推荐指数
1
解决办法
7171
查看次数

OutputStream和InputStream的实现者,用于内存文件传输

我正在使用API​​(Jasper Reports)生成PDF,我想在内存中完成大部分工作.我已经能够将生成的文件作为一个OutputStream,现在我只是在寻找一个实现器,用于将内存保存在内存中InputStream.

我可以使用哪些类,既可以作为OutputStreamInputStream在内存中的数据?

java java-io

1
推荐指数
1
解决办法
8066
查看次数