簡體   English   中英

Java:inputstream / outputstream的默認值?

[英]Java: default values for inputstream/outputstream?

我正在嘗試使用android中的庫連接到終端仿真器,這將連接到串行設備,並且應該向我顯示發送/接收的數據。 要附加到終端會話,我需要向setTermIn(InputStream)提供一個輸入流,並向setTermOut(OutputStream)提供一個輸出流。

但是,當我按以下方式聲明流時,它們默認為null,不是嗎?

private OutputStream bos;
private InputStream bis;

...

//inside onCreate() method
session.setTermIn(bis);
session.setTermOut(bos);
/* Attach the TermSession to the EmulatorView. */
mEmulatorView.attachSession(session)

因此,當我嘗試將流附加到會話時,出現錯誤:

FATAL EXCEPTION: TermSession input reader
java.lang.NullPointerException at jackpal.androidterm.emulatorview.TermSession$2.run(TermSession.java:137)

指向庫中的此代碼:

public void run()
{
    try
    {
        while (true)
        {
            int read = mTermIn.read(mBuffer);
            if (read == -1)
            {
                // EOF -- process exited
                return;
            }
            mByteQueue.write(mBuffer, 0, read);
            mMsgHandler.sendMessage(mMsgHandler.obtainMessage(NEW_INPUT));
        }
    }
    catch (IOException e)
    {
    }
    catch (InterruptedException e)
    {
    }
}

這是因為我還沒有開始發送和接收數據,所以還沒有將數據分配給流。 我該怎么做,設置一些虛假數據以分配給流? 我嘗試過,它仍然抱怨。 也許我做錯了。

要發送和接收數據,我有以下方法,盡管我不希望每次調用它們時都設置流。

每當我按Enter鍵時,都將覆蓋重寫通過串行發送數據以設置流的方法,該方法將運行:

public void sendData(byte[] data)
{
    bos = new ByteArrayOutputStream(data.length);
}

每當接收到數據時運行:

public void onDataReceived(int id, byte[] data) 
{
    bis = new ByteArrayInputStream(data);
}

如何正確初始化? 並且我真的應該在每次發送和接收數據時都設置流嗎,這有關系嗎? 還是應該檢查一下?

使用前必須先初始化bisbos

您可以在使用這兩行之前將其放置

session.setTermIn(bis);
session.setTermOut(bos);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM