[英]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);
}
如何正確初始化? 並且我真的應該在每次發送和接收數據時都設置流嗎,這有關系嗎? 還是應該檢查一下?
使用前必須先初始化bis
和bos
您可以在使用這兩行之前將其放置
session.setTermIn(bis);
session.setTermOut(bos);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.