Java:物件流讀取文字中的物件丟擲EOFException的解決方法
今天,在操作物件流的時候遇到了問題,並最終找到了解決方案,特分享出來,希望能幫到遇到同樣問題的你。
我首先往檔案中存入了5個物件,然後讀取,讀到null就停止。原本以為引用物件是靠null來判斷,誰知
物件是讀完了,可是丟擲了一個EOFException,這是什麼鬼?問老師後,老師說這是物件流讀到檔案末尾後丟擲的一個異常,代表著檔案讀完了。好吧,看來這種讀取是沒問題的,有問題的是我的判斷方式。老師說可以用這個異常作為讀完的標誌,就是讀到出現這個異常,代表讀完了。
修改程式碼,如下
完美解決,哈哈哈。
當然了,最好不要這樣用,可以先把所有物件存到集合中,再把集合物件用物件流存到檔案中,讀取的時候只需要讀取這個集合物件,然後再遍歷,就可以拿到所有的物件了,而且沒有異常,是不是很完美?
2017/8/3 21:51
Lucifer
相關推薦
Java:物件流讀取文字中的物件丟擲EOFException的解決方法
今天,在操作物件流的時候遇到了問題,並最終找到了解決方案,特分享出來,希望能幫到遇到同樣問題的你。 我首先往檔案中存入了5個物件,然後讀取,讀到null就停止。原本以為引用物件是靠null來判斷,誰知
java中用位元組流讀取文字時中文亂碼
位元組流可以讀取任何檔案,視訊流;音訊流都可以; 字元流只能讀取字元; 說明:一般的漢字是2個位元組,而英語字母是1個位元組,如果用位元組流讀取中文,一個位元組一個位元組的輸出,容易把中文漢字截斷,建議用字元流讀取; import Java.io.*; publ
Java中IO流讀取文字出現亂碼的解決方法
在編寫IO程式碼時,發現在讀取含有中文欄位的文字時,出現了亂碼,所以就查找了一下解決辦法,這裡借用一下其他博主的總結: 轉載地址:https://blog.csdn.net/qq_28950007/article/details/50760899 第一種方法:(不知道檔案的編碼),那通過
java基礎BufferedReader類(提高字元流讀取文字檔案的效率)IO流(位元組流/字元流)
String nstr=sb.toString().replace("{name}", “ok”).replace("{sex}", “男”).replace("{hobby}", “陶笛”);boolean exists( ) 判斷檔案或目錄是否存在 bool
Java: PrintWriter.write 向文字檔案中寫入換行。
Today I use java to parse a file and get some special content and write the content to another file.I met a strange problem that when I us
Java:位元組流、字元流
1、IO概述- IO流概述及分類 1)、IO流: I:Input(輸入):資料從外部流向程式中。(外部:檔案) O:Ouput(輸出):資料從程式流向外部。 流:線性的,有方向的 2)、作用: 可以“讀”,“寫”檔案的內容,File類只能獲取檔案/目
_148_Java_java中用位元組流讀取文字時中文亂碼
注:編寫的程式碼和讀取的文字字元編碼要一致.無論緩衝的byte[]長度是多少都可以讀取 複製以下程式碼,設定要讀取的文字,可以直接執行. import java.io.*; public class Test8 { /* * ==>本java檔案採用的編碼(GB
python:例項化類物件時提示“TypeError: Employee() takes no arguments”的解決方法
最近開始學習python,學習面向物件的知識時遇到一個問題 在建立例項物件時提示“TypeError: Employee() takes no arguments”,百度翻譯了一下,意思是這個類的建構函式不接受引數 找了半天實在不理解哪裡出問題了,明明都在"_
java:三重des加密中明文、密文長度
對長度為7的位元組陣列加密,解密輸出結果: Java程式碼 原明文byte[]長度:7 相應的16進位制字串值:0123456789abcd 加密後byte[]長度:8 相應的16進位制字串值:19dffce951d8c37d 解密後byte[]長度:7 相應的16進位制字串
JAVA語言如何進行異常處理,關鍵字:throws,throw,try,catch,finally分別代表什麼意義?在try塊中可以丟擲異常嗎?
Java通過面向物件的方法進行異常處理,把各種不同的異常進行分類,並提供了良好的介面。 在Java中,每個異常都是一個物件,它是Throwable類或其它子類的例項。當一個方法出現異常後便 丟擲一個異常物件,該物件中包含有異常資訊,呼叫這個物件的方法可以捕獲到這個異常
Java語言如何進行異常處理,關鍵字:throws、throw、try、catch、finally分別代表什麼意義?在try塊中可以丟擲異常嗎?
try塊表示程式正常的業務執行程式碼。如果程式在執行try塊的程式碼時出現了“非預期”情況,JVM將會生成一個異常物件,這個異常物件將會被後面相應的catch塊捕獲。 catch塊表示一個異常捕獲塊。
按行讀取文字中的內容
實現效果: 知識運用: StreamReader類的ReadLine方法 實現程式碼: private void button1_Click(object sender, EventArgs e) { OpenFileDialo
JAVA 語言如何進行異常處理,關鍵字:throws,throw,try,catch,finally 分別代表什麼意義?在 try 塊中可以丟擲異常嗎?
Java 通過面向物件的方法進行異常處理,把各種不同的異常進行分類,並 提供了良好的介面。在 Java 中,每個異常都是一個物件,它是 Throwable 類或 其它子類的例項。當一個方法出現異
JAVA使用位元組流讀取資料一定注意精確讀取
使用InputStream讀取檔案資料,採用read(byte[])這個方法的時候,一般是如下方式: byte[] bytes = new byte[1024]; File file = new File("G:\\NIO\\src\\cn\\wzy\\test.txt"); InputSt
【Java:IO流】 byte[] 轉FileInputStream
/** * 位元組轉FileInputStream * * @param bytes * @return */ public FileInputStream byteToFile(byte[] bytes, Strin
JAVA:IO流 之 節點流與處理流(2)
1. 流的分類 按資料流的方向不同:輸入流,輸出流。 按處理資料單位不同:位元組流,字元流。 (1) 位元組流:資料流中最小的資料單元是位元組。 (2)字元流:資料流中最小的資料單元是字元, Java中的字元是Unicode編碼,一個字元佔用兩個位元組。
如何用python讀取文字中指定行的內容
1 利用python的readlines()函式: <strong><span style="font-size:24px;"> </span><span style="font-size:14px;">fobj = op
javascript onclick事件中傳遞物件引數和JavaScript中物件字串轉換
支援原創,原文連結 var user = {id:1, name:'zs', age:20}; var ele = '<a onclick="edit(' + JSON.stringify(user).replace(/"/g, '"'
Java:求二叉樹中節點的最大距離
class Node{ public int data; public Node left; public Node right; public int leftmaxdistance; public int rightmaxdistance; public N
JAVA語言如何進行異常處理,關鍵字:throws,throw,try,catch,finally分別代表什麼意義?在try塊中可以丟擲異常嗎
Java通過面向物件的方法進行異常處理,把各種不同的異常進行分類,並提供了良好的介面。在Java中,每個異常都是一個物件,它是Throwable類或其它子類的例項。當一個方法出現異常後便丟擲一個異常物件,該物件中包含有異常資訊,呼叫這個物件的方法可以捕獲到這個異常並進行