Java 在android中将字节数组转换为base64字符串时获取损坏的编码数据

Java 在android中将字节数组转换为base64字符串时获取损坏的编码数据,java,android,base64,Java,Android,Base64,我正在我的应用程序中开发一个android应用程序,我想将图像的字节数组转换为base64字符串。但当我转换时,我得到了损坏的结果 这是我的任务 public class Test1 extends AsyncTask<Void, byte[], String> { @Override protected String doInBackground(Void... voids) { try { myClient2 = new

我正在我的应用程序中开发一个android应用程序,我想将图像的字节数组转换为base64字符串。但当我转换时,我得到了损坏的结果

这是我的任务

 public class Test1 extends AsyncTask<Void, byte[], String> {
    @Override
    protected String doInBackground(Void... voids) {

        try {
            myClient2 = new Socket("192.168.1.1", 6666);

            System.out.println("a:" + myClient2);
            try {
                JSONObject jsonObject1 = new JSONObject();
                jsonObject1.put("cmd", "request_download_file");
                jsonObject1.put("file_name", filename1);
                jsonObject1.put("verification", "CVS");


                System.out.println("File name========" + filename1);

                System.out.println("b111111111111111" + jsonObject1);
                myClient2.setKeepAlive(true);
                System.out.println(myClient2.getLocalAddress() + " " + myClient2.getLocalSocketAddress() + " " + myClient2.getKeepAlive());
                System.out.println(myClient2.getKeepAlive());
                try {

                    DataInputStream dis1 = new DataInputStream(myClient2.getInputStream());

                    //reads file length from datainputstream
                    DataOutputStream dos1 = new DataOutputStream(myClient2.getOutputStream());
                    jsonReader1 = new JsonReader(new InputStreamReader(dis1));//, "UTF-8"));

                    InputStreamReader inputReader = new InputStreamReader(dis1);

                    writer1 = new OutputStreamWriter(dos1);//, StandardCharsets.UTF_8)
                    writer1.write(jsonObject1.toString());
                    System.out.println("c");
                    writer1.flush();

                    BufferedInputStream input = new BufferedInputStream(myClient2.getInputStream());
                    Log.e("input", "input" + input);

                    byte[] data = new byte[1024];

                    BufferedReader brdr = new BufferedReader(inputReader, 300);

                    boolean status = false;


                    int countPackets = 0;

                    while (!status) {

                        byte[] buffer = new byte[1024]; // or 4096, or more

                        int bytesRead = input.read(buffer, 0, buffer.length);

                        int availableBytes = input.available();


                        str2 = str2.append(bytesRead);

                        ImageDataArray = concat(ImageDataArray, buffer);

                        countPackets = countPackets + buffer.length;

                        System.out.println(ImageDataArray.length);




                        System.out.println(countPackets);

                        System.out.println("get" + ImageDataArray);


                        String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss")
                                .format(new Date());


                        System.out.println("check--" + timeStamp + "--");


                        if (input.available() != 0) {
                            System.out.println("String:" + str1.toString());
                        } else break;
                    }

                    System.out.println("--------------------out of while ------------------");

                    System.out.println("filename===========" + filename1);
                    // String filename = String.format("%s%s", Environment.getExternalStorageDirectory().getAbsoluteFile(), "/SteelmanPro/1020/images/image34" + ".jpg");

                    File file = new File(Environment.getExternalStorageDirectory().getAbsoluteFile().toString(), "/SteelmanPro/1020/images/image");



                    if (!file.exists()) {

                        file.mkdirs();
                        System.out.println("File Created++++++++++++++++++");

                    }


                    int position = - 1;

                    for (int i = 0; i < ImageDataArray.length - 2; i++) {
                        if (ImageDataArray[i] == (byte) 0xff && ImageDataArray[i + 1] == (byte) 0xdf) {
                            position = i;
                            Log.e("position", "position." + position);

                            break;
                        }
                    }


                    write(ImageDataArray,file.toString() +filename1);


                    String encodedImage = Base64.encodeToString((byte[])ImageDataArray, Base64.DEFAULT);
                   Log.i("Base64=========",encodedImage.toString());


                    int a = data.length;

                    Log.e("data.length", "data.length" + a);



                    System.out.println("String:" + str1.toString());
                    normalLoginResponse = hexChars;


                } catch (Exception e) {
                    e.printStackTrace();
                }

            } catch (Exception e) {
                e.printStackTrace();
                System.out.println("send JSON error");
            }
            System.out.println("d");
            System.out.println("e");
            System.out.println("f");
            System.out.println("g");

        } catch (Exception e) {
            e.printStackTrace();
            System.out.println("creation exception1");

        }

        return normalLoginResponse;
    }


    @Override
    protected void onPostExecute(String response) {

}

如果有人知道这一点,请帮助我

您正在使用BufferedReader接收图像文件的字节

这不会像您看到的那样起作用,因为读卡器用于文本数据


因此,请删除它。

ImageDataArray-它是您的字节[]?然后是什么损坏了?您应该告诉服务器正在发送什么。还有你从插座上读到的东西。您是否将发送的字节数与接收的字节数进行了比较?请给出数字。
.encodeToString((字节[])ImageDataArray
是时候告诉你数组的类型了。该强制转换看起来很糟糕。
write(ImageDataArray,file.toString()+filename1);
该怎么办?write()在哪里定义的?如果它创建了一个文件,那么它是一个有效的文件吗?我想你错了。
Base64=========: eyJjbWQiOiJyZXNwb25zZV9kb3dubG9hZF9maWxlIiwicmVzdWx0Ijoic3VjY2VzcyIsImZpbGVf
                                                             c2l6ZSI6IjQwMzgzMyJ9DQoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
                                                             AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
                                                             AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
                                                             AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
                                                             AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
                                                             AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
                                                             AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
                                                             AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
                                                             AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
                                                             AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
                                                             AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
                                                             AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
                                                             AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
                                                             AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
                                                             AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
                                                             AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
                                                             AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/Y
                                                             /+ERHUV4aWYAAE1NACoAAAAIAAwBAAADAAAAAQQAAAABAQADAAAAAQMAAAABAgADAAAAAwAAAJ4B
                                                             BgADAAAAAQACAAABEgADAAAAAQABAAABFQADAAAAAQADAAABGgAFAAAAAQAAAKQBGwAFAAAAAQAA
                                                             AKwBKAADAAAAAQACAAABMQACAAAAHAAAALQBMgACAAAAFAAAANCHaQAEAAAAAQAAAOQAAAEcAAgA
                                                             CAAIAAr8gAAAJxAACvyAAAAnEEFkb2JlIFBob3Rvc2hvcCBDUzUgV2luZG93cwAyMDE2OjA1OjI1
                                                             IDE4OjE4OjM2AAAEkAAABwAAAAQwMjIxoAEAAwAAAAH//wAAoAIABAAAAAEAAAXcoAMABAAAAAEA
                                                             AARlAAAAAAAAAAYBAwADAAAAAQAGAAABGgAFAAAAAQAAAWoBGwAFAAAAAQAAAXIBKAADAAAAAQAC
                                                             AAACAQAEAAAAAQAAAXoCAgAEAAAAAQAAD5sAAAAAAAAASAAAAAEAAABIAAAAAf/Y/+0ADEFkb2Jl
                                                             X0NNAAL/7gAOQWRvYmUAZIAAAAAB/9sAhAAMCAgICQgMCQkMEQsKCxEVDwwMDxUYExMVExMYEQwM
                                                             DAwMDBEMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAQ0LCw0ODRAODhAUDg4OFBQODg4OFBEM
                                                             DAwMDBERDAwMDAwMEQwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAz/wAARCAB4AKADASIAAhEB
                                                             AxEB/90ABAAK/8QBPwAAAQUBAQEBAQEAAAAAAAAAAwABAgQFBgcICQoLAQABBQEBAQEBAQAAAAAA
                                                             AAABAAIDBAUGBwgJCgsQAAEEAQMCBAIFBwYIBQMMMwEAAhEDBCESMQVBUWETInGBMgYUkaGxQiMk
                                                             FVLBYjM0coLRQwclklPw4fFjczUWorKDJkSTVGRFwqN0NhfSVeJl8rOEw9N14/NGJ5SkhbSVxNTk
                                                             9KW1xdXl9VZmdoaWprbG1ub2N0dXZ3eHl6e3x9fn9xEAAgIBAgQEAwQFBgcHBgU1AQACEQMhMRIE
                                                             QVFhcSITBTKBkRShsUIjwVLR8DMkYuFygpJDUxVjczTxJQYWorKDByY1wtJEk1SjF2RFVTZ0ZeLy
                                                             s4TD03Xj80aUpIW0lcTU5PSltcXV5fVWZnaGlqa2xtbm9ic3R1dnd4eXp7fH/9oADAMBAAIRAxEA
                                                             PwDgk8lKE8IKVuKeSmhOAkpcEqQKiApAJKXkp5KQCeElKkpSU4anDUlLap5Kfan2pKWkp5KfaltS
                                                             UtuKUlPtT7UlMEjKntTbUlIyE0Im1NtSU//Q4WE8KQCUIKYwpAJwFIBJTENUg1SAUg1JTENUg1SD
                                                             VMNSUwDU4aiBqkGpKRhifYihik2pzvotLvgJSUh2JbFYOPY36Tdv9Ytb/wBW5qhDCYD2EjmHsP5H
                                                             I0pFtS2ooDXGGlrj4Ag/9SU5rI5BQUg2pbUbamLUlIdqYtRS1MWpKf/R4kJ0wCkgpQCkAmAKkAUl
                                                             MgFIBMNFJ1dwg2OFFEAuI/nXa/RE/QYipk1smAJJ7DlTAG4s1e8c1sgkf13H9HX/AGnKo7qFMEe/
                                                             Yf8AB1+0n/jr3f8AUVKDuqWhuylrKGDhrBP/AEne3/oJKbd1jqiXlllVQ72sDwD/AMbj2H/z0gDK
                                                             e+0WU5WM5kQKLCWj+t+l9F27+0qF2QbtLi+wDUAkxPkPooYHtJLRtJ0JS+inUbj9Sex5LfWfINPp
                                                             uDmdw9rxU5/t+jYr+E7Ma1wdVlW2NYC4VU7pLfZvt/Oa1v8AIrsXNhrR7toA117Lr8DH/wCbHQB1
                                                             7Ol/VM4FvSMWwktqaRrn21O/wux36H/RIhDiVW4VLTYWVX7eA6Zn930v3lpUZzrW1hgZQyzRrQAD
                                                             v4Nbmw1u9jvzFz2U8jIeQ42PLjve8kuJIHuc785yYZB+y2Vk7fex7YPxrf8A+iv8xJLvO6X1fLv/
                                                             AEtWFdWD7LLvYf8AwL6P9tqpWZzMK44uZi24VrPpMaQ9on84bfT3Md/pK/UWl0rqjsjFY60EXCGP
                                                             EH3GPbY3+u36av5XQczrLGV3Y/pMrMsvtOxwB+kxjYfa5j/3PTQA7Ktxce+rIe0UZDXBxAJJ+iJ1
                                                             e9j9r2tYim0N0llx8WtLRH9f2+5bLPq30HpbYy8gNd3Y2GE/+fst/wDnJzk/VatjmNx9zSCC7Y4u
                                                             /s22u3sd/KRrxVY7OJuYeJHkUiFXry6bMxuO1r2kn2F4gOj3R/m/yUcnUoEKf//S44VlTFSstoKM
                                                             zGsdu9Ot1prY6xzWDcQxn85Y79ytn59j/Ykpp+mGgudo0ckqDb6QfoFw+MIOS592TW6u0WVtjdWG
                                                             uaGbmhz5dZHqWMe70fb9P0/Ur/QojWHsISGotR00bD8prqHspa2i0j2PAEgj+UdzljZH24kuvD3/
                                                             AMrkfe1araUZlUI0i3n2WsJh2h80YMrdEHnhbjsSi0fpa2v/AKwBP3qI6TgkAeloOBudA+HuSpTj
                                                             CkTEx4k/3InpVBoDtdvGq2WdJwhxWR/bd/5JWsL6sDqLzXjUPsA+m42ObW3/AIywu2f2fppUprfU
                                                             /oWL1DOszc0x0jpjfWzHWaMe8TZVj/yqtrfWv/4P9H/hU/WbOs/Wfq