Java 大文件到base64字符串数组

Java 大文件到base64字符串数组,java,android,string,base64,bytearray,Java,Android,String,Base64,Bytearray,我的函数返回一个超出其限制的字符串,因为我使用的文件太大 有没有一种方法可以创建一个返回字符串数组的函数,以便稍后我可以级联它们并重新创建文件 private String ConvertVideoToBase64() { ByteArrayOutputStream baos = new ByteArrayOutputStream(); FileInputStream fis; try { File inputFile = new File("/stor

我的函数返回一个超出其限制的字符串,因为我使用的文件太大

有没有一种方法可以创建一个返回字符串数组的函数,以便稍后我可以级联它们并重新创建文件

private String ConvertVideoToBase64()
{
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    FileInputStream fis;

    try {
        File inputFile = new File("/storage/emulated/0/Videos/out.mp4");

        fis = new FileInputStream(inputFile);

        byte[] buf = new byte[1024];
        int n;
        while (-1 != (n = fis.read(buf)))
            baos.write(buf, 0, n);
        byte[] videoBytes = baos.toByteArray();

        fis.close();

        return Base64.encodeToString(videoBytes, Base64.DEFAULT);
        //imageString = videoString;
    } catch (IOException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    }
}

整个电影可能无法立即在RAM中播放,这正是您试图使用
baos
对象所做的

尝试重写代码,对每个1024字节的块进行编码,然后写入文件/通过网络发送/任何内容

编辑:我认为您需要使用流媒体方式。这在不能/不想同时在内存中保存所有数据的平台上很常见

基本算法将是:

Open your file. This is an input stream.
Connect to your server. This is your output stream

While the file has data
 Read some amount of bytes, say 1024, from the file into a buffer.
 encode these bytes into a Base64 string
 write the string to the server

Close server connection
Close file

您有输入流端。我假定您有一些正在发布的web服务。查看如何开始使用输出流。

如何将文件写入1024字节的块?另外,假设我将文件写入1024字节的块,我还需要将每个块转换为base-64,并将它们添加到服务器端,对吗?+1,回答很好:)是的,我正在将base64数据发布到web服务,但我正在通过立即向其发送总字符串来进行调用。因此,如果可能的话,我更喜欢使用参数(比如mediaString[])。您推荐的方法类似于将数据同步到web服务,我更希望在获得mediaString[]之后再这样做。