欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

java 字符流和字節流的區別

榮姿康1年前8瀏覽0評論

對于Java程序員來說,在文件的讀與寫方面最基礎的概念就是字節流和字符流。這兩個概念在Java的I/O包中有很多的應用。下面我們來看看它們有什么不同。

字節流

public class ByteStreamExample {
public static void main(String[] args) throws IOException {
FileInputStream in = new FileInputStream("test.txt");
int c;
while ((c = in.read()) != -1) {
System.out.print((char) c);
}
in.close();
}
}

當我們讀取文件時,我們使用字節流來處理,因為在硬盤中文件是以二進制數據存儲,需要經過編碼才能被讀取。

字符流

public class CharacterStreamExample {
public static void main(String[] args) throws IOException {
FileReader in = new FileReader("test.txt");
int c;
while ((c = in.read()) != -1) {
System.out.print((char) c);
}
in.close();
}
}

當我們讀取文本文件時,我們使用字符流來處理,因為在文本文件中字符是以Unicode編碼方式存儲的。

區別

區別很簡單,字節流是處理8-bit字節的,而字符流是處理16-bit Unicode字符的。在表現形式上,字節流可以處理所有類型的數據(包括文本和二進制數據),而字符流只能處理文本文件。

在Java內部中,字符流實際上是對字節流的一種包裝。它們之間的關系如下圖所示:

+---------------+
|   InputStream  |
+---------------+
^
|
+---------------+
|    Reader     |
+---------------+

除了它們在處理不同類型數據時的差異外,其他方面它們都是相同的,包括其概念、方法和實現等。