第二十课:输入和输出(I/O流)

第二十课:输入和输出(I/O流)
一、了解输入和输出的概念
•当你在利用程序将文件/RAM内存/键盘输入的东西 获取到的这个过程中,它会使用到
你系统的InputStream(输入流)
•当你在利用程序将一些内容输出到文件/RAM内存/控制台等的时候,这个过程里面 使
用到了系统的OutputStream(输出流)
•BIOS

二、使用File类操作文件或目录
java.io.File类
•需求:获取某个文件的大小
•常用的API
⑴long length(); 获取文件的大小 单位:字节
⑵boolean exists(); 判断文件/目录是否存在
⑶boolean isFile(); 判断是否是文件
⑷boolean isDirectory(); 判断是否是目录
⑸String getPath(); 获取相对路径
⑹String getAbsolutePath(); 获取绝对路径
⑺boolean delete(); 删除空目录、文件
⑻boolean createNewFile(); 创建【文件】
⑼boolean mkdir(); 创建文件夹
⑽String getName(); 获取文件名,带有扩展名
⑾list等…

三、理解流的概念和分类
1.流:(电流、水流、车流)乃至于我们计算机世界中的数据流
它所代表的是一组有序的数据序列 以先进先出德兴市进行传递(流动)
2.按照流的走向:(参照的是程序是在进行读取还是写入)
⑴输入流(读)
⑵输出流(写)
3.按照处理的数据单元:
⑴字节流
它可以用来以字节为单位操作数据 一般用来作为数据传递使用
可以操作的有 普通的文本文件、图片、视频、音频等所有的
⑵字符流
文本 一般用来阅读一些内容
可以操作能被Notepad++打开不乱码的内容

四、会使用字节流读写文本文件
1.InputSteam -> FileInputStream 字节输入流
⑴构造:
FileInputStream(File file);
FileInputStream(String path);
⑵常用方法:
•int read(); 从输入流中读取一个字节数据
•int read(byte[] b); 从输入流中读取字节数组b长度的字节数据,会将读取到的字节
数据存储到字节数组中 返回值是真正读取到的总字节数量
•int read(byte[] b,int offset,int length); 从输入流中读取指定索引开始 指定长度的字
节数据
•void close(); 关流!!!!!
•int avaliable(); 返回可读取到的字节数量
2.OutputStream -> FileOutStream 字节输出流
⑴构造:(默认情况下,如果文件不存在 输出流辉自动创建文件,并且每一次都会覆盖
文件内容)
•FileOutputStream(File file);
•FileOutputStream(String path);
•FileOutputStream(String path,boolean append); 可以继续追加数据
⑵常用方法:
•void write(int byte); 将一个字节写入输出流
•void write(byte[] b); 将一个字节数组写入输出流
•void write(byte[] b,int offset,int length); 将一个字节数组内指定索引开始 指定长度
的字节数据写入输出流
•void close(); 关流!!!
3.需求:利用字节流 将d盘下的a.txt 复制到 e盘下的c.txt

  public class Text1{
      @SuppressWarnings(“resource”)
      public static void main(String[] args){
          FileInputStream fis = null;
          FileOutputStream fos = null;
          try{
              // 1.指定数据源
              fis =new File InputStream(“d:/a.txt”);
              // 2.指定输出目的地
              fos = new FileOutputStream(“e:/c.txt”)
              
              //byte[] b =new byte[fis.available()];
              byte[] b =new byte[1024];
              int len = 0;
              //边读边写
              // 循环读取输出流  每次读取1024个字节数据
              while((len = fis.read(b)) != -1 ){
                  fos.write(b,0,len);
              }
          }catch(Exception e){
              e.printstackTrace();
          }finally{
              // 3.关流
              try{
                  // 先开后关
                  if(fos != null){
                      fos.close();
                  }
                  if(fis != null){
                      fis.close();   
                  }
              }catch(IOException e){
                  e.printStackTrace();
              }
          }
      }
  }

第三方库
commons-io

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值