Java Android 二进制文件读写

Java Android 二进制文件读写

Java Android 二进制文件读写

1.读取android工程中本地二进制文件

Android studio工程目录中有二进制文件abcd.raw 。
二进制文件所放目录 app/src/main/assets/abcd.raw

1.1一次性读取二进制文件

   private byte[] readLocalFile() throws IOException {
        String fileName = "abcd.raw";
        InputStream inputStream = getAssets().open(fileName);
        byte[] data = toByteArray(inputStream);
        inputStream.close();
        return data;
    }
    private byte[] toByteArray(InputStream in) throws IOException {
        ByteArrayOutputStream out = new ByteArrayOutputStream();
        byte[] buffer = new byte[1024 * 4];
        int n = 0;
        while ((n = in.read(buffer)) != -1) {
            out.write(buffer, 0, n);
        }
        return out.toByteArray();
    }

1.2 分段读取二进制文件,一次读取1024个字节

    byte[] buffer = new byte[1024];
    private void readLocalFile() throws IOException {
        String fileName = "abcd.raw";
        InputStream inputStream = getAssets().open(fileName);
        int n = -1;
        while ((n = inputStream.read(buffer,0,1024)) != -1) {
            //buffer为读出来的二进制数据,长度1024,最后一段数据小于1024
        }
        inputStream.close();
    }

2.分段读取手机目录中本地二进制文件

手机目录中有二进制文件abcd.raw 。
二进制文件所在手机目录 /sdcard/abcd.raw

   private void readLocalFile() {
        FileInputStream inputStream = null;
        File file = new File("/sdcard/abcd.raw");
        try {
            inputStream = new FileInputStream(file);
            byte buffer[] = new byte[1024];
            int len = 0;
            while ((len = inputStream.read(buffer,0,buffer.length))>0) {
                //buffer为读出来的二进制数据,长度1024,最后一段数据小于1024
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (inputStream!=null) {
                try {
                    inputStream.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }

3.写入手机目录二进制文件

写入到手机目录中有二进制文件/sdcard/aaa.raw 。

 FileOutputStream fos = null;
    private void openPCMfile(byte[] bytes) {
        File f = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator+ "aaa.raw");
        if (!f.exists()) {
            File parentFile = f.getParentFile();
            if (!parentFile.exists()) {
                parentFile.mkdirs();
            }
            try {
                f.createNewFile();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        try {
            fos = new FileOutputStream(f);
            fos.write(bytes, 0, bytes.length);
            fos.flush();
            fos.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    ```

你可能感兴趣的:(java)