Java 中的字符流 Vs 字节流
原文:https://www . geesforgeks . org/character-stream-vs-byte-stream-Java/
输入输出流
流是一种顺序访问文件的方法。输入/输出流是指代表不同类型源(如磁盘文件)的输入源或输出目的地。java.io 包提供了允许您在 Unicode 字符流和非 Unicode 文本的字节流之间进行转换的类。
流–数据序列。 输入流:从源读取数据。 输出流:将数据写入目的地。
字符流
在 Java 中,字符是使用 Unicode 约定存储的(详情参见这个)。字符流自动允许我们逐个字符地读/写数据。例如,文件读取器和文件写入器是用于从源读取和向目标写入的字符流。 T3】
// Java Program illustrating that we can read a file in
// a human readable format using FileReader
import java.io.*; // Accessing FileReader, FileWriter, IOException
public class GfG
{
public static void main(String[] args) throws IOException
{
FileReader sourceStream = null;
try
{
sourceStream = new FileReader("test.txt");
// Reading sourcefile and writing content to
// target file character by character.
int temp;
while ((temp = sourceStream.read()) != -1)
System.out.println((char)temp);
}
finally
{
// Closing stream as no longer in use
if (sourceStream != null)
sourceStream.close();
}
}
}
输出:
Shows contents of file test.txt
字节流
字节流逐字节(8 位)处理数据。例如,文件输入流用于从源读取,文件输出流用于写入目标。
// Java Program illustrating the Byte Stream to copy
// contents of one file to another file.
import java.io.*;
public class BStream
{
public static void main(String[] args) throws IOException
{
FileInputStream sourceStream = null;
FileOutputStream targetStream = null;
try
{
sourceStream = new FileInputStream("sorcefile.txt");
targetStream = new FileOutputStream ("targetfile.txt");
// Reading source file and writing content to target
// file byte by byte
int temp;
while ((temp = sourceStream.read()) != -1)
targetStream.write((byte)temp);
}
finally
{
if (sourceStream != null)
sourceStream.close();
if (targetStream != null)
targetStream.close();
}
}
}
什么时候使用字符流而不是字节流?
- 在 Java 中,字符是使用 Unicode 约定存储的。当我们想要处理文本文件时,字符流非常有用。这些文本文件可以逐字符处理。字符大小通常为 16 位。
什么时候使用字节流而不是字符流?
- 面向字节的读取逐字节进行。字节流适用于处理原始数据,如二进制文件。
备注:
- 字符流的名称通常以读取器/写入器结尾,字节流的名称以输入流/输出流结尾
- 示例代码中使用的流是非缓冲流,效率较低。为了提高效率,我们通常将它们与缓冲读取器/写入器一起使用。我们将很快讨论使用 BufferedReader/BufferedWriter(用于字符流)和 BufferedInputStream/bufferedoutstream(用于字节流)类。
- 如果不再使用该流,建议将其关闭。这确保了如果发生任何错误,流不会受到影响。
- 由于文件可能不存在,上述代码可能无法在在线编译器中运行。
本文由莫希特·古普塔供稿。如果你喜欢 GeeksforGeeks 并想投稿,你也可以使用contribute.geeksforgeeks.org写一篇文章或者把你的文章邮寄到 contribute@geeksforgeeks.org。看到你的文章出现在极客博客主页上,帮助其他极客。
如果你发现任何不正确的地方,或者你想分享更多关于上面讨论的话题的信息,请写评论。
版权属于:月萌API www.moonapi.com,转载请注明出处