Java 具有OutputStream的先进先出(或类似)

Java 具有OutputStream的先进先出(或类似),java,android,stream,outputstream,fileoutputstream,Java,Android,Stream,Outputstream,Fileoutputstream,我从Android摄像头获取数据字节(流),然后将它们(使用OutputStream)附加到一个文件(text.data)中,然后我计划用ffmpeg读取该文件。但是,这个文件肯定会增长,我需要一种方法,在一定的时间(比如说30秒)之后,我需要删除文件的初始部分(可能对应于10秒)。这就是我所说的先进先出。在这一刻,我不知道30秒后文件会有多大,但我想这是我可以通过试用弄清楚的 这可能吗?如果是,有人能帮忙吗 编辑:再想一想,我想我需要使用一个缓冲区,当它满的时候,我写文件或类似的东西 我目前使

我从Android摄像头获取数据字节(流),然后将它们(使用OutputStream)附加到一个文件(text.data)中,然后我计划用ffmpeg读取该文件。但是,这个文件肯定会增长,我需要一种方法,在一定的时间(比如说30秒)之后,我需要删除文件的初始部分(可能对应于10秒)。这就是我所说的先进先出。在这一刻,我不知道30秒后文件会有多大,但我想这是我可以通过试用弄清楚的

这可能吗?如果是,有人能帮忙吗

编辑:再想一想,我想我需要使用一个缓冲区,当它满的时候,我写文件或类似的东西

我目前使用的代码如下:

Camera.PreviewCallback callback = new Camera.PreviewCallback() {
    @Override
    public void onPreviewFrame(byte[] data, Camera camera) {
        //Do your processing here... Use the byte[] called "data"
            Log.d("Cam ","Cam preview callback");
        try {
            File f=new  File(Environment.getExternalStorageDirectory()+"/test.data");
            if(!f.exists()){
                f.createNewFile();
            }
            OutputStream outStream = new FileOutputStream(f,true);

            Camera.Parameters parameters = camera.getParameters();
            int imageFormat = parameters.getPreviewFormat();
            if (imageFormat == ImageFormat.NV21) {
                Camera.Size previewSize = parameters.getPreviewSize();
                int frameWidth = previewSize.width;
                int frameHeight = previewSize.height;
                Rect rect = new Rect(0, 0, frameWidth, frameHeight);
                YuvImage img = new YuvImage(data, ImageFormat.NV21, frameWidth, frameHeight, null);
                outStream.write(data);                   
                outStream.flush();
            }
        }
        catch (FileNotFoundException iex){
            Log.d("File :-",iex.getMessage());

        }
        catch (IOException iexp){
            Log.d("File :-","IOExcp"+iexp.getMessage());
        }
    }
};

考虑编写一组具有您选择大小的文件。然后简单地删除第一个。@ JuStAutoJavaAc编程器:这是个好主意。考虑写一组你所选大小的文件。然后简单地删除第一个。@JustanotherJavaprogrammer:这是个好主意。