[英]How to use BufferedReader to read content in DataInputStream
[英]How can I know if a BufferedReader is chained with a DataInputStream?
在一個方法中,我需要一個包裝DataInputStream作為參數的BufferedReader。 我想聲明方法如下:
public void firstPass(BufferedReader inStream){ // some code ... }
但我不知道如何檢查inStream是否包裝DataInputStream。
我試過了
public static void firstPass(BufferedReader inStream){
if (inStream instanceof DataInputStream){
}
}
但代碼無法編譯(Eclispe不接受代碼:“不兼容的條件操作數類型BufferedReader和DataInputStream”)。
為什么需要這個? 因為我想在inStream中使用相同的變量:
所以我需要一個鏈接兩個類的流。
我正在使用Java 7 JDK編程。
有人可以幫幫我嗎? 提前致謝。
DataInputStream永遠不能是BufferedReader的實例 - 它們都在不同的類層次結構中。
BufferedReader包裝另一個Reader,而不是Stream。
您可以使用InputStreamReader從Streams橋接到Readers。
從同一個Reader中讀取雙精度數和行數並沒有多大意義 - 一個是原始二進制數據,另一個是字符數據。 也許你需要閱讀雙打的文本編碼,並使用Double.parseDouble(text)
解析它。
答:不可能通過向接受bufferedReader參數的方法添加標志來完成您要完成的任務。
B.目前還不清楚你是如何將DataInputStream傳遞給BufferedReader的(可能是通過InputStreamReader對嗎?)但是無論如何你一起使用BufferedReader和DataInputStream似乎是錯誤的。 BufferedReader將像普通的InputStream一樣使用你的DataInputStream,所以我不知道你為什么要把DataInputStream放在它周圍
DataInputStream類不是BufferedReader類的子類型
class DataInputStream extends FilterInputStream implements DataInput {}
class BufferedReader extends Reader {}
更多信息:
BufferedReader
不是DataInputStream
的子類,因此您的錯誤是合乎邏輯的......
BufferedReaders用於文本數據,DataInputStream用於二進制數據。 除非你喜歡混淆別人,否則你永遠不會用另一個包裹一個。
您可以使用DataInputStream來包裝BufferedInputStream(以其他方式包裝它沒有任何意義)
您可以圍繞InputStreamReader包裝BufferedReader,但沒有簡單的方法來確定已完成此操作。
你可以寫
BufferedReader br = new BufferedReader(new FileReader(name));
但您必須使用反射庫來確定BufferedReader包裝的內容。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.