gpt4 book ai didi

java - 如何让Java快速从端口读取字节并将字节存储到文件中?

转载 作者:行者123 更新时间:2023-12-01 23:33:13 35 4
gpt4 key购买 nike

我遇到了 java 问题以及如何导入 1024000 个数字到文件。我创建了一个应用程序,它从端口读取数据并将每个数字作为 ascii 字符存储到文件中。但这需要太长时间。 java应该更快。我应该改变什么?我应该使用其他库吗?不是文件输出流?正如我现在在 20 分钟内测试的那样,我的文件中有 100.000 个......谢谢

public void serialEvent(SerialPortEvent evt) {  

if (evt.getEventType() == SerialPortEvent.DATA_AVAILABLE)
{
try
{
int singleData = input.read();

if(index<=1024000)
{
if(index==1024000 && singleData==42)
{
logText = "End of data. "+index+" data received ";
}
else
{
if (singleData != NEW_LINE_ASCII)
{
// logText = Integer.valueOf(singleData).toString()+"\n";
index++;
}

writeFile(singleData, fileName, false);
}
}
}
catch (Exception e)
{
logText = "Failed to read data. (" + e.toString() + ")";
}
}
}

public void writeFile(int data, String fileName, boolean endOfFile) throws IOException {

FileOutputStream xfos = new FileOutputStream(fileName,true);
DataOutputStream xdos = new DataOutputStream(xfos);

xdos.writeBytes(Integer.toString(data)+"\n"); // writes Ascii

xdos.close();
}

最佳答案

停止打开和关闭每个条目的文件,并开始缓冲。创建一个 int[] 来保存传入的整数,并且仅在拥有一定数量的整数后才写入。此外,根据环境,您可以保持流打开并仅在退出时关闭它们(或读取 1024000 个条目)。

现在,每次获得一个整数时,您都会打开文件,一直运行到最后,写入一行,然后关闭它。打开和关闭的成本很高,您当然可以这样编写,这样就不必每次都发生。

关于java - 如何让Java快速从端口读取字节并将字节存储到文件中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19034154/

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