day03

输入输出流:读入写出
 
 节点流:
   有明确的来源和去向
   往往对字节操作
 节点流又叫低级流、字节流
 
  处理流:
  没有明确的来源和去向
  往往对低级流或其他高级流进行操作,不能独立存在
  处理流又叫高级流

*FileOutputStream fos=new FileOutputStream("a.txt",true);     //创建对象,在当前目录下创建一个名为“a”的txt文件

//FileOutputStream默认会覆盖原有的内容 若不想被覆盖,声明对象时添加一个参数true

*  String message="断剑重铸之日,其势归来之时。";

*  fos.write(message.getBytes());

*fos.close()                           //记得关闭流,否则可能会造成严重后果

例:用字节流来复制某个文件

*FileInputStream fis1=new FileInputStream("文件名.文件类型");                  //读入
*  long ms1=System.currentTimeMillis();
*  byte []buf1=new byte[文件大小(单位b)];
*  fis1.read(buf1);
*  FileOutputStream fis2=new FileOutputStream("复制的文件文件名.文件类型");            //写出  
*  fis2.write(buf1);
*  long ms2=System.currentTimeMillis();
*  System.out.println(ms2-ms1);                                //用时(毫秒)
*  fis2.close();

BufferedInputStream/BufferedOutputStream:

缓冲高级流。内部维护了一个缓冲区,当我们需要写出数据时,会将数据存放在缓冲区,当缓冲区满时,一次性将数据写出。高级流需要用要用低级流作为辅助。

*FileOutputStream fos=new FileOutputStream("b.txt");        //低级流(字节流)

*BufferedOutputStream bos=new BufferedOutputStream(fos);      //高级流  (两者都为写出流)

*  String message="德玛西亚之力";                
 
* byte[]buf=message.getBytes();                  //将字符串转换为字节,用数组接收
*  bos.write(buf);                         //写出                 

*  bos.close();                          //关闭高级流即可

用高级流复制文件:

  FileInputStream fos = new FileInputStream("文件名.文件类型");
  BufferedInputStream bos = new BufferedInputStream(fos);
  
  byte[] b = new byte[10240];                     //可以不调用数组进行复制
  
  FileOutputStream fis = new FileOutputStream("复制出的文件文件名.文件类型");
  BufferedOutputStream bis = new BufferedOutputStream(fis);
  
  long a1 = System.currentTimeMillis();
  int i = -1;
  while ((i = bos.read(b)) != -1) {              //(i = bos.read()) != -1 此注释与数组相关
   bis.write(b);                    
   //bis.write(i);
  }
  bis.close();
  bos.close();
  long a2 = System.currentTimeMillis();
  System.out.println(bs - a);              //计算用时(单位毫秒)

Java学习笔记-Java文件操作流的更多相关文章

  1. Java 学习笔记(14)—— 文件操作

    java文件操作主要封装在Java.io.File中,而文件读写一般采用的是流的方式,Java流封装在 java.io 包中.Java中流可以理解为一个有序的字符序列,从一端导向到另一端.建立了一个流 ...

  2. 【java学习笔记】文件操作

    文件操作 java.io.File ①创建删除文件及目录 ②查看文件及目录属性 ③文件过滤器 (PS:不包括文件读写数据) 1.单个文件 创建单个文件,查看属性,删除单个文件. package tmp ...

  3. java学习笔记07--日期操作类

    java学习笔记07--日期操作类   一.Date类 在java.util包中定义了Date类,Date类本身使用非常简单,直接输出其实例化对象即可. public class T { public ...

  4. [java学习笔记]java语言核心----面向对象之this关键字

    一.this关键字 体现:当成员变量和函数的局部变量重名时,可以使用this关键字来区别:在构造函数中调用其它构造函数 原理:         代表的是当前对象.         this就是所在函数 ...

  5. [java学习笔记]java语言核心----面向对象之构造函数

    1.构造函数概念 特点: 函数名与类名相同 不用定义返回值类型 没有具体的返回值 作用:                给对象进行初始化 注意: 默认构造函数 多个构造函数是以重载出现的 一个类中如果 ...

  6. Java学习之==>IO文件操作体系

    一.概述 在整个 Java.io 中最重要的就是5个类和一个接口.5个类指的是 File.InputStream.OutputStream.Reader.Writer,一个接口指的是Serializa ...

  7. Java学习笔记43(打印流、IO流工具类简单介绍)

    打印流: 有两个类:PrintStream,PrintWriter类,两个类的方法一致,区别在于构造器 PrintStream:构造方法:接收File类型,接收字符串文件名,接收字节输出流(Outpu ...

  8. Java学习笔记38(字符流)

    字符输出流:Writer类:使用时候需要它的子类 局限性:只能写文本文件,无法写其他文件 方法: package demo; import java.io.FileWriter; import jav ...

  9. C++ 学习笔记之——文件操作和文件流

    1. 文件的概念 对于用户来说,常用到的文件有两大类:程序文件和数据文件.而根据文件中数据的组织方式,则可以将文件分为 ASCII 文件和二进制文件. ASCII 文件,又称字符文件或者文本文件,它的 ...

  10. Java学习笔记-Java中的常用类

    Java中有很多类是很常用的,此处列举System,Runtime,Date,Calendar,Math System System:类中的方法和属性都是静态的 字段摘要 static PrintSt ...

随机推荐

  1. 深入理解Android异步消息处理机制

    一.概述 Android 中的异步消息处理主要分为四个部分组成,Message.Hndler.MessageQueue 和 Looper.其关系如下图所示: 1. Message 是线程之间传递的消息 ...

  2. Prometheus笔记(二)监控go项目实时给grafana展示

    欢迎加入go语言学习交流群 636728449 Prometheus笔记(二)监控go项目实时给grafana展示 Prometheus笔记(一)metric type 文章目录 一.promethe ...

  3. JS中的运算符_函数学习

    js中的运算符:     算数运算符:     + - * / % ++ --          逻辑运算符:     & | !  && || < > <= ...

  4. Koa - 中间件(理解中间件、实现一个验证token中间件)

    前言 Koa 应用程序是一个包含一组中间件函数的对象,它是按照类似堆栈的方式组织和执行的. 当一个中间件调用 next() 则该函数暂停并将控制传递给定义的下一个中间件.当在下游没有更多的中间件执行后 ...

  5. visual studio code开发代码片段扩展插件

    背景 visual studio code编辑器强大在于可以自己扩展插件,不仅可以去插件市场下载,也可以按照官方的API很方便的制作适合自己的插件: 自己最近在开发一个手机端网站项目,基于vant项目 ...

  6. 利用 Redis 来优化功能部署和错误分类

    来源:Redislabs 作者:Shabih Syed 翻译:Kevin (公众号:中间件小哥) 为了让系统运行更流畅,又避免 Knights Capital 在 2012 年犯下的 4.6 亿美元的 ...

  7. Socket与系统调用深度分析

    学习一下对Socket与系统调用的分析分析 一.介绍 我们都知道高级语言的网络编程最终的实现都是调用了系统的Socket API编程接口,在操作系统提供的socket系统接口之上可以建立不同端口之间的 ...

  8. Python爬虫基础——XPath语法的学习与lxml模块的使用

    XPath与正则都是用于数据的提取,二者的区别是: 正则:功能相对强大,写起来相对复杂: XPath:语法简单,可以满足绝大部分的需求: 所以,如果你可以根据自己的需要进行选择. 一.首先,我们需要为 ...

  9. java基础集合简介List/Vector(三)上

    集合特点: 1:对象封装数据,对象多了也需要存储.集合用于存储对象. 2:集合是可变长度的. 集合和数组的区别: 1:数组是固定长度的:集合可变长度的. 2:数组可以存储基本数据类型,也可以存储引用数 ...

  10. js问题记录(一) -- 关于for in, sort(), 及prototype

    1.关于for in for in : 遍历对象中的可枚举的属性 例子1:for in 遍历对象的键为String类型,所以调用时用Object[key]形式,而不用Object.key形式 < ...