java io字节流和字符流,java io流

  java io字节流和字符流,java io流

  一、绪论

  如果要对文件内容进行操作,就必须依靠数据流,而数据流可以分为两种类型:

  字节流:InputStream(字节输入流)和OutputStream(字节输出流);

  字符流:阅读器(字符输入流),写入器(字符输出流);

  二、区别

  字节流是原生操作,而字符流是经过处理的操作。

  网络数据传输和磁盘数据存储支持的数据类型只有:字节。操作前必须将磁盘中的所有数据读入内存,内存会帮助我们将字节变成字符。字符更适合处理中文。如果字符流用于处理中文,字节流用于任何其他数据。

  相关学习视频推荐:java学习视频

  三、字节输出流:(OutputStream)

  OutputStream类定义了三种重要的输出操作方法:

  1.输出给定字节数组的所有内容:

  公共void写入(字节b [])引发IO异常2。输出一些字节数组内容:(强调)

  Public void write (byte b [],int off,int len)抛出io异常3。输出一个字节:

  公共抽象void write (int b)抛出IOException OutputStream是一个抽象类。根据抽象类的基本原理,要想得到OutputStream类的实例化对象,必须有一个子类。如果要操作文件,可以使用FileOutputStream类来处理。该类的构造方法如下:

  1. 接收File类(覆盖):

  公共FileOutputStream(File file)抛出FileNotFoundException2. 接收File类(追加):

  公共文件输出流(file file,boolean append)//第一步:定义要输出的文件的File类对象。

  File File=new File( e: File . separator hello File . separator my . txt );

  //输出信息时文件可以不存在,但目录必须存在。

  如果(!File.getparentfile()。exists()){//父路径不存在

  file.getParentFile()。mkdirs();//创建父路径

  }

  //第二步:使用OutputStream的子类实例化父类

  output stream output=new file output stream(file);

  //第三步:输出文本信息

  msg=‘富者济世,贫者独善其身’;//字符串

  //为了便于输出,需要将字符串改为字节数组

  byte data[]=msg . getbytes();//成为字节数组

  输出.写入(数据);//输出数据

  output . close();//关闭流输出文件的部分内容

  output.write(data,0,10);//输出部分数据,以循环方式输出单字节信息。

  for(int x=0;x数据长度;x ) {

  output . write(data[x]);//单字节输出数据

  }但是使用单字节输出会覆盖之前的一切。因此,有必要添加数据。

  output stream output=new file output stream(file,true);//这里是附加操作四、字节输入流:(InputStream)

  InputStream类中定义了三种数据读取方法:

  1.读取单个字节:

  公共抽象int read()抛出IOException每次执行该方法时,都会读取数据的当前字节。如果读取已经完成,最终返回-1。

  2.读取数据到字节数组中:

  Public int read (byte b [])抛出IO异常。最常用的方法,每次数据读入数组,都会返回一个读取长度的数据。如果没有数据,则返回的长度为-1。

  但是有两种情况需要考虑:

  要读取的内容大于打开的数组内容:长度是整个数组的长度。

  要读取的内容小于开放数组的内容,长度都是最后的内容长度,所以不满足程序集的个数。

  3.读取部分内容到字节数组中:

  Public int read (byte b [],int off,int len)每次将东西读入部分字节数组时抛出IO异常,只能读取全极限数组的字节数。这个方法仍然返回读取长度。

  InputStream是一个抽象类,因此要读取文件,需要使用FileInputStream子类。子类定义的构造如下:

  方法:公共文件输入流(文件File)抛出找不到文件异常。//第一步:定义要输出的文件的文件类对象。

  File File=新文件( e: File。分隔符 hello 文件。分隔符 my。txt’);

  //第二步:实例化输入流

  InputStream input=新文件InputStream(file);

  //实现数据的读取操作

  字节数据[]=新字节[1024];

  int len=输入。读(数据);//将数据读取到数组之中

  System.out.println(读取的内容【‘new String(data,0,len)’】’);

  //第四步关闭输入流

  输入。close();补充:数据输入流和输出流

  输入流类继承了输入流。也就是说输入流是输入流的子类。但它们同是实现了数据输入接口。

  输出流类继承了输出流。也就是说输出流是输出流的子类。但它们同是实现了数据输出接口。

  五、字符输出流:(Writer)

  作者是一个抽象类,要进行文件字符流操作可以使用字符输出流类处理,其构造方法为:

  公共文件编写器(文件文件)//第一步:定义要输出的文件的文件类对象

  File File=新文件( e: File。分隔符 hello 文件。分隔符 my。txt’);//你的路径

  如果(!file.getParentFile().exists()) {

  file.getParentFile().mkdirs();

  }

  writer out=new FileWriter(file);

  字符串str=一定要好好学习,天天向上。;

  出去。write(str);

  出去。close();虽然作者类提供有字符数组的输出操作能力,但是从本质上来讲使用作者类就意味着要执行字符串的直接输出。字符流最适合操作中文,但并不意味着字节流就无法操作中文。

  六、字符输入流:(Reader)

  读者是一个抽象类,要进行文件字符流操作可以使用字符输入流类处理,其构造方法为:

  公共文件读取器(文件文件)//第一步:定义要输出的文件的文件类对象

  File File=新文件( e: File。分隔符 hello 文件。分隔符 my。txt’);//你的路径

  if(file.exists()) {

  reader in=新文件阅读器(file);

  char data[]=new char[1024];

  int len=in.read(数据);//向字符数组保存数据,返回长度。

  系统。出去。println(新字符串(data,0,len));

  英寸close();七、补充

  为了提高字符流读写的效率,引入了缓冲机制,java提供了缓存流类:BufferedInputStream、BufferedOutputStream类和BufferedReader、BufferedWriter类

  //使用缓冲器进行文件读写

  BufferedInputStream BufferedInputStream=new BufferedInputStream(新文件输入流

  (新文件( D:\ \大爆炸-如果你(活)。MP3’));

  File new File=new File( D:\ \复制音乐\ \大爆炸-如果你(Live)。MP3’);

  新文件。创建新文件();

  BufferedOutputStream BufferedOutputStream=new BufferedOutputStream(新文件输出流(新文件));

  字节[]字节=新字节[1024];

  int length=0;

  while((length=bufferedinputstream。read(字节))!=-1){

  bufferedOutputStream.write(字节,0,长度);

  }相关文章教程推荐:java开发入门以上就是关于爪哇岛中输入-输出流的字节流与字符流的详细介绍的详细内容,更多请关注我们其它相关文章!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: