⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 loopedstreams.java

📁 数据库远程同步软件NetBeans项目源文件 项目采用Jdesktop集成组件(JDesktop Integration Components
💻 JAVA
字号:
/* * To change this template, choose Tools | Templates * and open the template in the editor. */package databasesyncdesktopapplication.stream;import java.io.ByteArrayOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.io.PipedInputStream;import java.io.PipedOutputStream;/** * * @author mjw917 */public class LoopedStreams { private PipedOutputStream pipedOS =        new PipedOutputStream();    private boolean keepRunning = true;    private ByteArrayOutputStream byteArrayOS =        new ByteArrayOutputStream() {        public void close() {            keepRunning = false;            try {                super.close();                pipedOS.close();            }            catch(IOException e) {                // 记录错误或其他处理                // 为简单计,此处我们直接结束                System.exit(1);            }        }    };    private PipedInputStream pipedIS = new PipedInputStream() {        public void close() {            keepRunning = false;            try    {                super.close();            }            catch(IOException e) {                // 记录错误或其他处理                // 为简单计,此处我们直接结束                System.exit(1);            }        }    };    public LoopedStreams() throws IOException {        pipedOS.connect(pipedIS);        startByteArrayReaderThread();    } // LoopedStreams()    public InputStream getInputStream() {        return pipedIS;    } // getInputStream()    public OutputStream getOutputStream() {        return byteArrayOS;    } // getOutputStream()    private void startByteArrayReaderThread() {        new Thread(new Runnable() {            public void run() {                while(keepRunning) {                    // 检查流里面的字节数                    if(byteArrayOS.size() > 0) {                        byte[] buffer = null;                        synchronized(byteArrayOS) {                            buffer = byteArrayOS.toByteArray();                            byteArrayOS.reset(); // 清除缓冲区                        }                        try {                            // 把提取到的数据发送给PipedOutputStream                            pipedOS.write(buffer, 0, buffer.length);                        }                        catch(IOException e) {                            // 记录错误或其他处理                            // 为简单计,此处我们直接结束                            System.exit(1);                        }                    }                    else // 没有数据可用,线程进入睡眠状态                        try {                            // 每隔1秒查看ByteArrayOutputStream检查新数据                            Thread.sleep(1000);                        }                        catch(InterruptedException e) {}                    }             }        }).start();    } // startByteArrayReaderThread()} // LoopedStreams

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -