gpt4 book ai didi

Java:输入流/输出流的默认值?

转载 作者:行者123 更新时间:2023-12-01 14:59:37 25 4
gpt4 key购买 nike

我正在尝试使用 Android 中的库连接到终端模拟器,这将连接到串行设备并应显示发送/接收的数据。要附加到终端 session ,我需要向 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)

因此,当我尝试将流附加到 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);

关于Java:输入流/输出流的默认值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13864404/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com