精华内容
下载资源
问答
  • 字符流 字节流

    2010-10-15 09:15:00
    字符流 处理字符或者字符串 文本 字节流可以处理任何 比如音频 图像等  字节流可用于任何类型的对象,包括二进制对象,而字符流只能处理字符或者字符串; 2. 字节流提供了处理任何类型的IO操作的...

    字符流 处理字符或者字符串 文本

    字节流可以处理任何 比如音频 图像等

       字节流可用于任何类型的对象,包括二进制对象,而字符流只能处理字符或者字符串; 2. 字节流提供了处理任何类型的IO操作的功能,但它不能直接处理Unicode字符,而字符流就可以。

    所以用字节流读文件 可能出现乱码

    展开全文
  • 字节输出流转换成字符输出流 字节输入流转换成字符输入流 字符流转字节流

        1)字节输出流转换成字符输出流(写到硬盘)

        

    //创建字节输出流
    FileOutputStream fis = new FileOutputStream("E:\\document\\aaa.txt");
    //字节输出流转换成字符输出流
    OutputStreamWriter osw = new OutputStreamWriter(fis);
    //转换成缓冲流
    BufferedWriter bw = new BufferedWriter(osw);
    
    bw.write("你好。");
    bw.close();
        2)字节输入流转换成字符输入流(读取硬盘)

    //创建文件字节输入流
    FileInputStream fis = new FileInputStream("E:\\document\\aaa.txt");
    //文件字节输入流转换成文件字符输入流
    InputStreamReader isr = new InputStreamReader(fis);
    //转换成缓冲
    BufferedReader br = new BufferedReader(isr);
    String str = br.readLine();
    while(str !=null){
    System.out.println(str);
        str = br.readLine();
    }
    fis.close();
    isr.close();
    br.close();

        3)  字符流转字节流
    File file  = new File("E:\\document\\file.txt");
    if(file == null )
    	System.out.println("文件不存在!");
    //存储文件的读取字符流。大小为文件的长度
    char[] ch = new char[(int)file.length()];
    try {
    	//构造一个文件读取对象
    	Reader reader = new FileReader(file);
    	reader.read(ch);
    	//字符流穿换成字节流
    	System.out.print(new String(ch).getBytes());	
    	reader.close();
    } catch (FileNotFoundException e) {
    	e.printStackTrace();
    } catch (IOException e) {
    	e.printStackTrace();
    }
    节流

    展开全文
  • 2、节点流,处理流,字节流字符流(只能处理字符数据)。 3、出入/输出流体系。用于实现I/O操作的流类和接口在java.io包中。 二、缓冲的字符流(BufferedReader/ BufferedWriter) 1、采用缓冲处
     
    

    一、复习

    1、数据流的基本概念的复习。

    2、节点流,处理流,字节流,字符流(只能处理字符数据)。

    3、出入/输出流体系。用于实现I/O操作的流类和接口在java.io包中。

    二、缓冲的字符流(BufferedReader/ BufferedWriter)

    1、采用缓冲处理是为了提高效率,如果没有缓存,例如FileReader对象,每次调用read()方法进行读操作时,都会直接去文件中读取字节,转换成字符并返回,这样频繁的读   取文件效率很低。

    2、缓冲的字符流的出现提高了对流的操作效率,原理就是将数组进行封装。

    3、在使用缓冲的字符流对象时,缓冲的存在是为了增强流的功能,因此在建立缓冲的字符流对象时,要先有流对象的存在。

    三、使用缓冲的字符流时其实就是使用流对象的方法,只不过加入了数组,对数据进行了临时存储,为了提高操作数据的效率。

    四、方法readLine()的原理

    该方法用的还是与缓冲的字符流相关联的流对象的read()方法,只不过,每一次读到一个字符,先不进行具体操作,先进行临时存储,当读取到回车标记时,将临时容器中存储的数据一次性返回。

    五、关于字节流和字符流的特点

    1、  字节流可以操作任何数据。

    2、  字符流使用的是字符数组;字节流使用的是字节数组。

    六、BufferedReader的特有方法:public String readLine();//一次读一行,到行标记时,将行标记之前的字符数据作为字符串返回。当读到末尾时,返回null。

    七、BufferedWriter的特有方法:public void newLine();//写出平台相关的行分隔符来标记一行的终止。Windows平台下为’\n’。

    八、粘贴一段今天的作业代码,这代码之中因为缺少一句很简单的代码,使我烦恼了半个小时!经过别人的提醒之后,我才忽然明白自己的失误!这个对我很有提醒作用,使我在今后的编程道路上更加认真!

    代码如下:

    package wsp.io;

    import java.io.*;

    public class zy8301 {   //今天的作业

        public static void main(String[] args){

           FileWriter fw = null;

           FileReader fr = null;

           BufferedReader br = null;   //利用缓冲的方法 提高运行的效率

           BufferedWriter bw = null;    //BufferedReader 和 BufferedWriter

           char[] arr = new char[1024];

          

           try {

               fw = new FileWriter("C:/Users/Vshoping/lianxi/temp1.txt");

               bw = new BufferedWriter(fw);

               fr = new FileReader("E:/MyEclipse 9/wsp/src/wsp/io/zy8301.java");

               br = new BufferedReader(fr,225);

               String str = null;

               while((str=br.readLine())!=null){

                  System.out.println(str);

                  bw.write(str);

    ************     //引用:BufferedWriter的特有方法:public void newLine();//写出平台相关的行分隔符来标记一行的终止。Windows平台下为’\n’。

     

                 

                  }

               bw.flush();

              

           } catch (IOException e) {

               // TODO Auto-generated catch block

               e.printStackTrace();

           }

           finally {

               if(br!=null){

                  try {

                      bw.close();

                  } catch (IOException e) {

                      // TODO Auto-generated catch block

                      e.printStackTrace();

                  }

               }

           }

        }

    }

    在******部分是缺少的代码:bw.newLine();

    展开全文
  • 【Java】字符流字节流

    2015-10-13 12:03:42
    字符流处理的单元为 2 个字节的 Unicode 字符,分别操作字符、字符数组或字符串,而字节流处理单元为 1 个字节,操作字节和字节数组。 Java 内用 Unicode 编码存储字符,字符流处理类负责将外部的其他编

    转载文章,尊重版权
    转载网址:http://blog.csdn.net/zj8692286/article/details/12650731

    Java 流在处理上分为字符流和字节流。字符流处理的单元为 2 个字节的 Unicode 字符,分别操作字符、字符数组或字符串,而字节流处理单元为 1 个字节,操作字节和字节数组。
    Java 内用 Unicode 编码存储字符,字符流处理类负责将外部的其他编码的字符流和 java 内 Unicode 字符流之间的转换。而类 InputStreamReader 和 OutputStreamWriter 处理字符流和字节流的转换。字符流(一次可以处理一个缓冲区)一次操作比字节流(一次一个字节)效率高。
    ( 一 )以字节为导向的 stream——InputStream/OutputStream
    InputStream 和 OutputStream 是两个 abstact 类,对于字节为导向的 stream 都扩展这两个鸡肋(基类 ^_^ ) ;
    1、 InputStream
    42134.gif
    1.1
    ByteArrayInputStream – 把内存中的一个缓冲区作为 InputStream 使用 .
    construct—
    (A)ByteArrayInputStream(byte[]) 创建一个新字节数组输入流( ByteArrayInputStream ),它从指定字节数组中读取数据( 使用 byte 作为其缓冲区数组)
    (B)—ByteArrayInputStream(byte[], int, int) 创建一个新字节数组输入流,它从指定字节数组中读取数据。
    —mark:: 该字节数组未被复制。
    1.2
    StringBufferInputStream – 把一个 String 对象作为 InputStream .
    construct—
    StringBufferInputStream(String) 据指定串创建一个读取数据的输入流串。
    注释:不推荐使用 StringBufferInputStream 方法。 此类不能将字符正确的转换为字节。
    同 JDK 1.1 版中的类似,从一个串创建一个流的最佳方法是采用 StringReader 类。
    1.3
    FileInputStream – 把一个文件作为 InputStream ,实现对文件的读取操作
    construct—
    (A)FileInputStream(File name) 创建一个输入文件流,从指定的 File 对象读取数据。
    (B)FileInputStream(FileDescriptor) 创建一个输入文件流,从指定的文件描述器读取数据。
    (C)-FileInputStream(String name) 创建一个输入文件流,从指定名称的文件读取数据。
    method —- read() 从当前输入流中读取一字节数据。
    read(byte[]) 将当前输入流中 b.length 个字节数据读到一个字节数组中。
    read(byte[], int, int) 将输入流中 len 个字节数据读入一个字节数组中。
    1.4
    PipedInputStream :实现了 pipe 的概念,主要在线程中使用 . 管道输入流是指一个通讯管道的接收端。
    一个线程通过管道输出流发送数据,而另一个线程通过管道输入流读取数据,这样可实现两个线程间的通讯。
    construct—
    PipedInputStream() 创建一个管道输入流,它还未与一个管道输出流连接。
    PipedInputStream(PipedOutputStream) 创建一个管道输入流 , 它已连接到一个管道输出流。
    1.5
    SequenceInputStream :把多个 InputStream 合并为一个 InputStream . “序列输入流”类允许应用程序把几个输入流连续地合并起来,
    并且使它们像单个输入流一样出现。每个输入流依次被读取,直到到达该流的末尾。
    然后“序列输入流”类关闭这个流并自动地切换到下一个输入流。
    construct—
    SequenceInputStream(Enumeration) 创建一个新的序列输入流,并用指定的输入流的枚举值初始化它。
    SequenceInputStream(InputStream, InputStream) 创建一个新的序列输入流,初始化为首先 读输入流 s1, 然后读输入流 s2 。
    2、 OutputSteam
    42135.gif
    2.1
    ByteArrayOutputStream : 把信息存入内存中的一个缓冲区中 . 该类实现一个以字节数组形式写入数据的输出流。
    当数据写入缓冲区时,它自动扩大。用 toByteArray() 和 toString() 能检索数据。
    constructor
    (A)— ByteArrayOutputStream() 创建一个新的字节数组输出流。
    (B)— ByteArrayOutputStream() 创建一个新的字节数组输出流。
    (C)— ByteArrayOutputStream(int) 创建一个新的字节数组输出流,并带有指定大小字节的缓冲区容量。
    toString(String) 根据指定字符编码将缓冲区内容转换为字符串,并将字节转换为字符。
    write(byte[], int, int) 将指定字节数组中从偏移量 off 开始的 len 个字节写入该字节数组输出流。
    write(int) 将指定字节写入该字节数组输出流。
    writeTo(OutputStream) 用 out.write(buf, 0, count) 调用输出流的写方法将该字节数组输出流的全部内容写入指定的输出流参数。
    2.2
    FileOutputStream: 文件输出流是向 File 或 FileDescriptor 输出数据的一个输出流。
    constructor
    (A)FileOutputStream(File name) 创建一个文件输出流,向指定的 File 对象输出数据。
    (B)FileOutputStream(FileDescriptor) 创建一个文件输出流,向指定的文件描述器输出数据。
    (C)FileOutputStream(String name) 创建一个文件输出流,向指定名称的文件输出数据。
    (D)FileOutputStream(String, boolean) 用指定系统的文件名,创建一个输出文件。
    2.3
    PipedOutputStream: 管道输出流是指一个通讯管道的发送端。 一个线程通过管道输出流发送数据,
    而另一个线程通过管道输入流读取数据,这样可实现两个线程间的通讯。
    constructor
    (A)PipedOutputStream() 创建一个管道输出流,它还未与一个管道输入流连接。
    (B)PipedOutputStream(PipedInputStream) 创建一个管道输出流,它已连接到一个管道输入流。
    ( 二 )以字符为导向的 stream Reader/Writer
    以 Unicode 字符为导向的 stream ,表示以 Unicode 字符为单位从 stream 中读取或往 stream 中写入信息。
    Reader/Writer 为 abstact 类
    以 Unicode 字符为导向的 stream 包括下面几种类型:
    1. Reader
    42136.gif
    1.1
    CharArrayReader :与 ByteArrayInputStream 对应此类实现一个可用作字符输入流的字符缓冲区
    constructor
    CharArrayReader(char[]) 用指定字符数组创建一个 CharArrayReader 。
    CharArrayReader(char[], int, int) 用指定字符数组创建一个 CharArrayReader
    1.2
    StringReader : 与 StringBufferInputStream 对应其源为一个字符串的字符流。
    StringReader(String) 创建一新的串读取者。
    1.3
    FileReader : 与 FileInputStream 对应
    1.4
    PipedReader :与 PipedInputStream 对应
    2. Writer
    42137.gif
    2.1 CharArrayWrite : 与 ByteArrayOutputStream 对应
    2.2 StringWrite :无与之对应的以字节为导向的 stream
    2.3 FileWrite : 与 FileOutputStream 对应
    2.4 PipedWrite :与 PipedOutputStream 对应
    3、两种不同导向的 stream 之间的转换
    3.1
    InputStreamReader 和 OutputStreamReader :
    把一个以字节为导向的 stream 转换成一个以字符为导向的 stream 。
    InputStreamReader 类是从字节流到字符流的桥梁:它读入字节,并根据指定的编码方式,将之转换为字符流。
    使用的编码方式可能由名称指定,或平台可接受的缺省编码方式。
    InputStreamReader 的 read() 方法之一的每次调用,可能促使从基本字节输入流中读取一个或多个字节。
    为了达到更高效率,考虑用 BufferedReader 封装 InputStreamReader ,
    BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
    例如: // 实现从键盘输入一个整数
    view plaincopy to clipboardprint?
    String s = null;
    InputStreamReader re = new InputStreamReader(System.in);
    BufferedReader br = new BufferedReader(re);
    try {
    s = br.readLine();
    System.out.println(“s= ” + Integer.parseInt(s));
    br.close();
    }
    catch (IOException e)
    {
    e.printStackTrace();
    }
    catch (NumberFormatException e)// 当应用程序试图将字符串转换成一种数值类型,但该字符串不能转换为适当格式时,抛出该异常。
    {
    System.out.println(” 输入的不是数字 “);
    }
    String s = null; InputStreamReader re = new InputStreamReader(System.in); BufferedReader br = new BufferedReader(re); try { s = br.readLine(); System.out.println(“s= ” + Integer.parseInt(s)); br.close(); } catch (IOException e) { e.printStackTrace(); } catch (NumberFormatException e)// 当应用程序试图将字符串转换成一种数值类型,但该字符串不能转换为适当格式时,抛出该异常。 { System.out.println(” 输入的不是数字 “); }
    InputStreamReader(InputStream) 用缺省的字符编码方式,创建一个 InputStreamReader 。
    InputStreamReader(InputStream, String) 用已命名的字符编码方式,创建一个 InputStreamReader 。
    OutputStreamWriter 将多个字符写入到一个输出流,根据指定的字符编码将多个字符转换为字节。
    每个 OutputStreamWriter 合并它自己的 CharToByteConverter, 因而是从字符流到字节流的桥梁。
    (三)Java IO 的一般使用原则 :
    一、按数据来源(去向)分类:
    1 、是文件: FileInputStream, FileOutputStream, ( 字节流 )FileReader, FileWriter( 字符 )
    2 、是 byte[] : ByteArrayInputStream, ByteArrayOutputStream( 字节流 )
    3 、是 Char[]: CharArrayReader, CharArrayWriter( 字符流 )
    4 、是 String: StringBufferInputStream, StringBufferOuputStream ( 字节流 )StringReader, StringWriter( 字符流 )
    5 、网络数据流: InputStream, OutputStream,( 字节流 ) Reader, Writer( 字符流 )
    二、按是否格式化输出分:
    1 、要格式化输出: PrintStream, PrintWriter
    三、按是否要缓冲分:
    1 、要缓冲: BufferedInputStream, BufferedOutputStream,( 字节流 ) BufferedReader, BufferedWriter( 字符流 )
    四、按数据格式分:
    1 、二进制格式(只要不能确定是纯文本的) : InputStream, OutputStream 及其所有带 Stream 结束的子类
    2 、纯文本格式(含纯英文与汉字或其他编码方式); Reader, Writer 及其所有带 Reader, Writer 的子类
    五、按输入输出分:
    1 、输入: Reader, InputStream 类型的子类
    2 、输出: Writer, OutputStream 类型的子类
    六、特殊需要:
    1 、从 Stream 到 Reader,Writer 的转换类: InputStreamReader, OutputStreamWriter
    2 、对象输入输出: ObjectInputStream, ObjectOutputStream
    3 、进程间通信: PipeInputStream, PipeOutputStream, PipeReader, PipeWriter
    4 、合并输入: SequenceInputStream
    5 、更特殊的需要: PushbackInputStream, PushbackReader, LineNumberInputStream, LineNumberReader
    决定使用哪个类以及它的构造进程的一般准则如下(不考虑特殊需要):
    首先,考虑最原始的数据格式是什么: 原则四
    第二,是输入还是输出:原则五
    第三,是否需要转换流:原则六第 1 点
    第四,数据来源(去向)是什么:原则一
    第五,是否要缓冲:原则三 (特别注明:一定要注意的是 readLine() 是否有定义,有什么比 read, write 更特殊的输入或输出方法)
    第六,是否要格式化输出:原则二

    展开全文
  • 字节流:可以处理一切。(包括音频、图片、视频之类) InputStream ---文件的复制--->  OutputStream  输入流:InputStream FileInputStream BufferedInputStream 输出流:OutputStream FileOutputStream...
  • java字符流字节流

    千次阅读 2006-12-09 16:48:00
    FileInputStream / FileOutputStream 文件字节流public class filecopy{ public static void main(String [] args) throws IOException{ File fin=new File("inte
  • 一:字符与字节的区别 字节:字节是计算机信息技术用于计量存储容量的一种计量单位,1个...JAVA 流在处理上分为字符流字节流 字符流字符流的处理单位为2个字节的Uncode字符,分别操作字符、字符数组、或字符串。
  • 字符流字节流

    2018-08-25 11:38:59
    java字符流字节流 字符流字节流的区别 是否使用缓存 是否编码 读取字节数 使用场景(后续补充,暂未想好) java字符流字节流 字符流字节流的区别 字节流 字符流 使用缓存 否 是...
  • 1.文件字节流: FileInputStream,FileOutputStream, 直接链接文件的节点流,作用是处理二进制的文件,将文件通过byte类型的变量中或者数组进行读取和输出。 使用 FileInputStream 读取文件内容 1) abstract int read( ...
  • JAVA 流分为 字节流 字符流

    千次阅读 2020-07-31 09:25:46
    字符流处理的是以2个字节为单元的unicode字符 字符数组 字符串 字节流处理的是 字节 字节数组 字节流一次操作一个字节 字符流一次操作一个缓冲区
  • 【Java基础-3】吃透Java IO:字节流字符流、缓冲流

    万次阅读 多人点赞 2020-09-23 20:12:33
    什么是Java-IO?字符流字节流的区别与适用场景是什么?缓冲流到底实现了什么?如何高效地读写文件? 本文用大量的示例图和实例,带你吃透Java IO。
  • 字符流字节流的区别

    万次阅读 多人点赞 2019-03-25 14:03:47
    字符流字节流的区别 (尊重劳动成果,转载请注明出处:https://blog.csdn.net/cynhafa/article/details/6882061陈江玉的博客) 字节流与和字符流的使用非常相似,两者除了操作代码上的不同之外,是否还有其他的...
  • 顾名思义 字节流就是内容以字节的形式存储在流中,字符流则以字符的形式存储在流中,一般而言,字符流只用来处理纯文本文件,而字节流则可以用来处理文本,图片,视频,音频等。 而对于字符流字节流来说都可以分成...
  • 字符流字节流区别

    千次阅读 2018-05-25 08:32:21
    字符流字节流区别 1)字节流操作的基本单元为字节;字符流操作的基本单元为Unicode码元。 2)字节流默认不使用缓冲区;字符流使用缓冲区。 3)字节流通常用于处理二进制数据,实际上它可以处理任意类型的数据,但...
  • 按流中处理的数据是以字节(8位)为单位还是以字符(16位)为单位分为字节流和字符流字节流: InputStream和OutputStreamInputStreamInputStream是抽象类,不能直接用new InputStream()构造实例。 FileInputStre
  • Java的字节流字符流的互换。转换流是字符流的子类,构造函数传参为字节流。(多态运用) 文章目录文件IO——转换流字符转字节构造方法字节转字符构造方法 Java转换流为我们提供的两种编码集(支持中文) GBK ...
  • 字节与字符,字节流字符流

    千次阅读 2015-03-13 00:35:13
    字节(byte) 一个字节是8位(bit),一个位代表0/1。即二进制 1KB=1024byte 1MB=1024*1024byte ASCII码 字母占1字节,汉字占2字节...UTF-8编码 1个英文字符等于1字节,中文等于3字节(常用的汉字占3个,超大字符汉字占4个)
  • 在java中想要区分字符流字节流挺简单的,一般也就面试或笔试中会被问到,下面就放干货 怎么区分字符流字节流 stream结尾都是字节流,reader和writer结尾都是字符流。 举例: 字节流: InputStream |-- ...
  • IO流IO,Input Out的...按流的数据单位分为字节流字符流 字节流字符流两者区别在于数据单位不一样。顾名思义,字节是计算机存储容量的一种计量单位,字符是字形和符号(占2个字节)。下面来看看他们的类。字符流
  • Java—字符流字节流

    2018-09-01 22:33:38
    字符流字节流的区别 二进制文件只能使用字节流进行复制 文本文件的复制既可以使用字符流也可以使用字节流
  • 字节流字符流

    2019-03-26 09:31:29
    字符流字节流根据字节流所要求的编码集解析获得的。 字符流=字节流+编码集,因此字符流相关的类都拥有操作编码集Unicode的能力。 1、字节流继承于InputStream OutputStream,字符流及程序InputStreamReader ...
  • 字节流字符流 与其常用操作

    千次阅读 2018-08-10 12:58:24
    字节流字符流 字节流 占一个字节,8位。 用于:视频、图像、音频等类容 IntputStream输入流 (OutputStream输出流) //都可以向上转型 InputStream子类 数据源类型 ByteArrayInputStream 包含一个内存缓冲...
  • 1、字符流字节流的区别 1.1、stream结尾都是字节流,reader和writer结尾都是字符流,在读写文件需要对内容按行处理,比如比较特定字符,处理某一行数据的时候一般会选择字符流。只是读写文件,和文件内容无关的,...
  • Java IO 转换流 字节字符流

    千次阅读 2017-11-24 21:44:34
    Java IO 转换流 字节转字符流 Java IO 转换流 字节转字符流   字节流 输入字节流: ---------| InputStream 所有输入字节流的基类。 抽象类。 ------------| FileInputStream 读取文件的输入字节流。 ------...
  • 字符流字节流是根据处理数据的不同来区分的。字节流按照8位传输,字符流按照16位传输  由于字符流使用Unicode字符集,支持多国文字,因此若流要跨越多种平台传输,应使用字符流。 一、...
  • 字节流字符流 先来看一下流的概念: 在程序中所有的数据都是以流的方式进行传输或保存的,程序需要数据的时候要使用输入流读取数据,而当程序需要将一些数据保存起来的时候,就要使用输出流完成。 程序中的输入...
  • //字节 FileInputStream fis=new FileInputStream(file); byte b[]=new byte[1024]; int len=0; while((len=fis.read(b))!=-1){ //将字节数组转成字符串 String s=new String(b, 0, len); System.out....

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 31,246
精华内容 12,498
关键字:

字符流字节流