输入inputStream字符流 Reader,Wirter

输入inputStream

 
import java.io.FileInputStream;
 import java.io.IOException;
 ​
 /*
 int read()从输入流中读取数据的下一个字节
 int read(byte[] b)从输入流中读取一定数量的字节,并将其储存在缓冲区数组b中
 void close()关闭输入流并且释放资源
  1.创建对象
  2.使用对象中的read方法
  3释放资源
  */
 public class FileInputStream01 {
     public static void main(String[] args) throws IOException {
         FileInputStream fileInputStream =new FileInputStream("D:\\学习\\b.txt");
         //int len =fileInputStream.read();
        // System.out.println(len);
         /*
         (len=fileInputStream.read())!=-1判断变量len是否不等于-1
          */
         int len=0;
         while ((len=fileInputStream.read())!=-1){
             System.out.println(len);
         }
         fileInputStream.close();
     }
 ​
 }
 
import java.io.FileInputStream;
 import java.io.IOException;
 import java.util.Arrays;
 ​
 /*
 字节输入流,一次读取多个字节的方法
 int read(byte[] b)从输入流中读取一定数量的字节,并将其储存在缓冲区中数组b中
 1.方法的参数byte[]的作用是什么
 起到缓冲作用存储每次读取到的多个字节
 数组的长度一般定义为1024,或者为1024的整数倍
 2.方法的返回值int是什么
 每次读取的有效值
 String类的构造方法
 String(byte[] bytes)把字节数组转换为字符串
  */
 public class FileInputStream02 {
     public static void main(String[] args) throws IOException {
         FileInputStream fileInputStream =new FileInputStream("D:\\学习\\b.txt");
 //        byte[] bytes =new byte[3];//每次读取的个数
 //        int len =fileInputStream.read(bytes);
 //        System.out.println(len);
 //        System.out.println(Arrays.toString(bytes));
 //        System.out.println(new String(bytes));//读取三位
 //         len =fileInputStream.read(bytes);
 //        System.out.println(len);
 //        System.out.println(new String(bytes));//读取后面三位0
         /*
         发现以上读取为重复读取
         可以使用循环优化
          */
         byte[] bytes=new byte[1024];
         int len=0;
         while ((len=fileInputStream.read(bytes))!=-1){
             //把字节数组的一部分转换为字符串offset数组开始索引‘length转换字节的个数
             System.out.println(new String(bytes,0,len));
         }
 ​
         fileInputStream.close();
     }
 }
 
import java.io.FileInputStream;
 import java.io.FileOutputStream;
 import java.io.IOException;
 ​
 /*
 实列,复制图片
 1.创建2个对象,FileInputStream, FileOutputStream
 2.读取
 3.写入
  */
 public class FileInputStream03 {
     public static void main(String[] args) throws IOException {
         long s =System.currentTimeMillis();
         //1.创建对象
         FileInputStream fileInputStream =new FileInputStream("D:\\学习\\a1\\1.png");
         FileOutputStream fileOutputStream =new FileOutputStream("D:\\学习\\a2\\1.png");
         //2.读取
 //        int len =0;
 //        while ((len=fileInputStream.read())!=-1){
 //            //打印输出
 //            //System.out.println(len);
 //            //写入
 //            fileOutputStream.write(len);
 //        }
         //使用数组缓冲写入
         byte[] bytes =new byte[1024];
         //使用字节输入流对象中的read方法
         int len =0;//每次读取的有效字节个数
         while ((len=fileInputStream.read(bytes))!=-1){
 ​
             fileOutputStream.write(bytes,0,len);
         }
         fileInputStream.close();
         fileOutputStream.close();
         long e=System.currentTimeMillis();
         System.out.println("复制耗时间"+(e-s)+"毫秒");
     }
 }

字符流 Reader,

 /*
 字符输入流
 int read() 读取单个字符
 int  read(char[] cbuf)一次读取多个字符,并将字符写入数组
 void close()释放资源
 FileReader文件字符输入流
  */
 public class Demo02Reader {
     public static void main(String[] args) throws IOException {
 //创建对象
         FileReader fileReader=new FileReader("D:\\学习\\b.txt");
 //        int len =0;
 //        while ((len=fileReader.read())!=-1){
 //            System.out.println((char) len);
 //        }
         char[] chars=new char[1024];
        int len =0;
         while ((len=fileReader.read(chars))!=-1){
             System.out.println(new String(chars,0,len));
         }
         fileReader.close();
     }
 }

Wirter

 
import java.io.FileWriter;
 import java.io.IOException;
 ​
 /*
 void close()
 关闭流,先刷新。
 void flush()
 刷新流。
 String getEncoding()
 返回此流使用的字符编码的名称。
 void write(char[] cbuf, int off, int len)
 写入字符数组的一部分。
 void write(int c)
 写一个字符
 void write(String str, int off, int len)
 写一个字符串的一部分。
 1.创建对象
 2.使用FileWirter中的方法,把数据写入到内存缓冲区域
 3.使用flush,把内存缓冲区域的数据,刷新到文件中
 4.释放,会先把内存缓冲区的数据刷新到文件中
 续写
  */
 public class Demo01Wirter {
     public static void main(String[] args) throws IOException {
         FileWriter fileWriter =new FileWriter("D:\\学习\\c.txt",true);//续写加上true
 //       fileWriter.write(97);
 //        fileWriter.flush();
 //       //刷新后流可以继续使用
 //        fileWriter.write(98);
 ​
 ​
 //     char[] chars ="我在学java".toCharArray();
 //     fileWriter.write(chars);
 //     fileWriter.write(chars,3,4);
 //     fileWriter.flush();
 //     fileWriter.write("我是程序员");
         for (int i = 0; i < 10; i++) {
             fileWriter.write("我在学习"+i+"\r\n");
         }
 ​
         fileWriter.flush();
         fileWriter.close();
     }
 }

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值