簡體   English   中英

Java BufferedReader對字符的操作?

[英]Java BufferedReader action on character?

enter code here我正在從Linux中的設備讀取流,該流包含十六進制字母,並以“ ^ M”定界。 只要設備准備好獲取更多信息,它就會發送字符“>”。 流看起來像這樣:

^M^M01 02 F3^M00 01 F3 3E^M>"

我需要檢測char>並對該char執行操作。 有沒有辦法我可以在“>”上定界並讀取該字符?

基本上目前看起來像這樣

 01 02 F3
00 01 F3 3E

我需要>來觸發單獨的操作。 如果出於某種原因僅在其中一個字符,則不會觸發讀取緩沖區。 我在想^ M。 我需要>做其他事情。

這樣做很有可能。 我最近寫了一個項目,該項目使用非常相似的界面讀取多只鼠標的輸入。 來自老鼠的二進制數據通過文件I / O輸入。

我認為在這里緩沖I / O是不合適的。 出於性能原因,緩沖的I / O將嘗試為您填充緩沖區。 但是,看來您的應用將花費大部分時間等待新角色。 如果您不大量閱讀,那么原始字節讀取InputStream將達到目的:它們將在收到請求的/預期的字節數(在您的情況下為1)后立即返回。 對於您的情況,在讀取>字符后,您將為以下字符發出另一個單字節讀取。

您需要弄清楚如何處理中間字符。 處理完>和以下字符后,您要如何處理非>以下字符?

我在應用程序中所做的就是直接從InputStream讀取單個字節。 這將阻止,因此必須在花費大部分時間等待的單獨Thread中完成。 當第一個字符出現時,我知道要閱讀一些更多的內容(就像您會讀的一樣),然后我便可以對其進行處理。 我設置了某種隊列來將該信息傳遞給我的應用程序的其余部分-您必須為線程間通信制定某種同步。

編輯:進行多次小的編輯以闡明要點。 對不起,如果最終導致混淆。

暫無
暫無

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

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