1:io流体系:对数据进行读写操作。所以IO不是读就是写咯。

2:io流的相关的类:java.io包。

有关IO的操作都会产生IOException异常

3:io:参照物是程序,

i:input.进来,读取数据到程序中。

o:output:出去,将数据从程序中写出去。

4:io流的分类,相关的类都会有相应的单词。

4.1:从数据的流向分。个人理解为就是内存和硬盘之间的数据交换,内存上的数据是暂时性的,而硬盘上的数据是永久性的。

Input(输入):读取数据,数据往程序中流。或者说:将硬盘上的数据放到内存上

Output(输出):写出数据,将数据从程序中写出去。或者说:将内存上的数据放到硬盘上

4.2:字节流和字符流

Stream:字节流,所有的数据都可以用字节流操作。计算机真正能识别的就是010101这些东西,8个0或者1组合成位,8位就是一个字节了。

Reader或者Writer:字符流。字符流是在字节流的基础上加了编码机制。只能对文字进行操作,虽说是文字,更贴切的说是文本文件,并不包括.doc等富文本文件,因为这些文件里面可以放图片或者其他的非文字内容。不能够对图片或者音频文件进行操作。

InputSteam:读取字节流。OutputStream:输出字节流。

Reader:读取字符流,   Writer:写出字符流。

5:文件字节流

OutputStream,:抽象类

文件输出字节流:FileOutputStream:节点流,跟目标设备相关联。

    实例一:

  1. import java.io.FileOutputStream;
  2. import java.io.IOException;
  3.  
  4. public class FileOutputStreamDemo1 {
  5.  
  6. public static void main(String[] args) throws IOException {
  7. //1.创建文件输出流对象,参数为全路径名
  8. FileOutputStream fos = new FileOutputStream("e:\\aa.txt");
  9. //2.写出数据
  10. //2.1准备数据
  11. String str = "要写出的数据";
  12. //2.2将数据转为字节数组的形式
  13. byte[] b = str.getBytes();
  14. //3.0将数据按照一个个字节地写出目标文件中
  15. /*for(int i=0; i<b.length; i++){
  16. fos.write(b[i]);
  17. }*/
  18. //3.1以下是将整个数组输出去,和3.0可到达相同的效果
  19. fos.write(b);
  20. //4.释放资源
  21. fos.close();
  22. }
  23.  
  24. }

文件输出字节流示例一

BufferedInputStream:处理流,必须先有节点流。为了增加效率。处理的方式是将节点流包装起来

  1. public static void testBufferedOutputStream() throws IOException{
  2. //在使用带缓冲区的字节流的时候先要有一个节点流作为参数,或者说先指定一个目标文件
  3. FileOutputStream fos = new FileOutputStream("d:\\test.txt");
  4. BufferedOutputStream bos = new BufferedOutputStream(fos);
  5.  
  6. //将以下文字写到目标文件中去
  7. String str = "这几个文字即将通过带缓冲区的字节流写到一个文本文件中";
  8. bos.write(str.getBytes());
  9. //写完之后记得要刷新才能真正写入到文件中,不然还会保存在缓冲区里,直到释放资源
  10. bos.flush();
  11. //释放资源(关闭流)
  12. bos.close();
  13.  
  14. }

带缓冲区的字节流

InputStream:抽象类。

文件输入字节流:FileInputStream:节点流,和要读取那个文件关联起来

  1. import java.io.FileInputStream;
  2. import java.io.IOException;
  3.  
  4. public class FileInputStreamDemo1 {
  5. public static void main(String[] args) throws IOException {
  6. //1.创建字节输入流对象
  7. FileInputStream fis = new FileInputStream("e:\\bb.txt");
  8. //2.开始读取数据
  9. // System.out.println((char)fis.read());
  10. int b;
  11. while((b=fis.read())!=-1){
  12. System.out.print((char)b);
  13. }
  14. fis.close();
  15. }
  16. }

文件字节输出流

BufferedOutputStream:带缓冲区的。也是为了增加效率,处理的方式是将节点流包装起来

  1. import java.io.BufferedInputStream;
  2. import java.io.FileInputStream;
  3. import java.io.FileNotFoundException;
  4. import java.io.IOException;
  5.  
  6. /*
  7. * 将一个文件的文字输出到控制台
  8. */
  9. public class BufferedInputStreamDemo1 {
  10.  
  11. public static void main(String[] args) {
  12.  
  13. FileInputStream fis = null;
  14. BufferedInputStream bis = null;
  15. try {
  16. fis = new FileInputStream("d:\\aa.txt");
  17. bis = new BufferedInputStream(fis);
  18. //byte数组用来装读取到的数据
  19. byte[] b = new byte[1024];
  20. int len = -1;
  21. while((len = bis.read(b))!=-1){
  22. System.out.println(new String(b, 0, len));
  23. }
  24. } catch (FileNotFoundException e) {
  25. e.printStackTrace();
  26. } catch (IOException e) {
  27. e.printStackTrace();
  28. }finally{
  29. try {
  30. bis.close();
  31. } catch (IOException e) {
  32. e.printStackTrace();
  33. }
  34. }
  35.  
  36. }
  37.  
  38. }

带缓冲区的文件字节输入流

6:字节流:在文件系统中,任何文件都是以二进制形式存储的,二进制用位体现(8位为一个二进制单元),8位=1字节,所以字节流可以处理任何文件。

6.1字节流常用的一些类:

6.1.1输入流read(), 读到末尾返回-1

常用read(byte[] b, int off, int len) 从此输入流中将最多 len 个字节的数据读入一个 byte 数组中。

FileInputStream:文件输入流

BufferedInputStream:带缓冲区的输入流,先要传入一个节点流(输入流)作为参数

6.1.2输出流write()

常用write(byte[] b, int off, int len) 将指定 byte 数组中从偏移量 off 开始的 len 个字节写入此文件输出流。

FileOutputStream:文件输入流

BufferedOutputStream:带缓冲区的输入流,先要传入一个节点流(输入流)作为参数

结合输入输出流写一个文件复制的工具:

  1. public static boolean copyFile( String filePath,String target){
  2.  
  3. boolean flag = false;
  4. //输出流,将数据写入到目标文件中
  5. FileOutputStream fos = null;
  6. //输入流,将要用的文本拿到程序中
  7. FileInputStream fis = null;
  8. //读取文本
  9. byte[] b = new byte[1024];
  10. //每次读取字符数据的有效长度
  11. int length = -1;
  12.  
  13. try {
  14. fis = new FileInputStream(filePath);
  15. fos = new FileOutputStream(target);
  16. /*
  17. * fis.read(b):从fis关联的文件中每次读取 1024 个字节,
  18. * 并把读取到的字节数据保存这个数组里面,
  19. * 但是这个文件并不是只有1024 这个么大,有可能要读多次,所以要用循环
  20. * 寻到的条件是读到文件没有得读了,就是读到最后了就不读了,
  21. * 读到末尾的返回值是-1,如果返回值是-1则停止循环
  22. *
  23. */
  24. while((length=fis.read(b)) != -1){//读到文件末尾就返回-1,不在往下读取
  25. //将读到的数据写入目标文件中
  26. fos.write(b, 0, length);
  27. fos.flush();//将数据刷到目标文件
  28. }
  29. System.out.println("文件复制成功!");
  30. } catch (FileNotFoundException e1) {
  31. e1.printStackTrace();
  32. }catch (IOException e) {
  33. e.printStackTrace();
  34. }finally{
  35. //关闭释放资源
  36. try {
  37. fos.close();
  38. fis.close();
  39. } catch (IOException e) {
  40. e.printStackTrace();
  41. }
  42. }
  43. flag = true;
  44. return flag;
  45. }

IO流(一)字节流的更多相关文章

  1. java io流(字节流)复制文件

    java io流(字节流) 复制文件 //复制文件 //使用字节流 //复制文本文件用字符流,复制其它格式文件用字节流 import java.io.*; public class Index{ pu ...

  2. IO流(字节流复制)01

    package ioDemo; import java.io.*; /** * IO流(字节流复制) * Created by lcj on 2017/11/2. */ public class bu ...

  3. JavaSE学习笔记(14)---File类和IO流(字节流和字符流)

    JavaSE学习笔记(14)---File类和IO流(字节流和字符流) File类 概述 java.io.File 类是文件和目录路径名的抽象表示,主要用于文件和目录的创建.查找和删除等操作. 构造方 ...

  4. 【JAVA IO流之字节流】

    字节流部分和字符流部分的体系架构很相似,有四个基本流:InputStream.OutputStream.BufferedInputStream.BufferedOutputStream,其中,Inpu ...

  5. Java笔记(二十六)……IO流上 字节流与字符流

    概述 IO流用来处理设备之间的数据传输 Java对数据的操作时通过流的方式 Java用于操作流的对象都在IO包中 流按操作的数据分为:字节流和字符流 流按流向不同分为:输入流和输出流 IO流常用基类 ...

  6. 【Java IO流】字节流和字符流详解

    字节流和字符流 对于文件必然有读和写的操作,读和写就对应了输入和输出流,流又分成字节和字符流. 1.从对文件的操作来讲,有读和写的操作——也就是输入和输出. 2.从流的流向来讲,有输入和输出之分. 3 ...

  7. JavaSE(十二)之IO流的字节流(一)

    前面我们学习的了多线程,今天开始要学习IO流了,java中IO流的知识非常重要.但是其实并不难,因为他们都有固定的套路. 一.流的概念     流是个抽象的概念,是对输入输出设备的抽象,Java程序中 ...

  8. IO流之字节流知识总结

    IO流分为字符流和字节流. 字节流;可以读取任何文件,电脑以字节的方式储存 字符流:用来读取字符. 下面是我总结的思维导图. 相关练习代码 public class Demo { @Test publ ...

  9. Java基础:IO流之字节流和字符流

    1. 流的概念 流(stream)的概念源于UNIX中管道(pipe)的概念.在UNIX中,管道是一条不间断的字节流,用来实现程序或进程间的通信,或读写外围设备.外部文件等. 一个流,必有源端和目的端 ...

  10. java的IO流,字节流和字符流

    java操作文件都是通过流来处理的,(其实其他很多语言也是这样) 第一:java的IO流,分为:输入流 和 输出流(这真是废话,这是从流向的角度来说的) 第二:java的所有IO流,只分为:字节流 和 ...

随机推荐

  1. 理解Javascript的Prototype

    在Javascript中创建对象主要分为三种方式 1. var catA = {name: "Fluffy", color: "White", age: 0}; ...

  2. jmeter- 性能测试3:聚合报告(Aggregate Report )

    jmeter-监听器-聚合报告样例: 字段说明: label:请求名称,自己定义的 #Samples:这次测试中一共发出了多少个请求,如果模拟20个用户,每个用户迭代20次,那么就是400(未设置持续 ...

  3. [LeetCode 题解]: Permutations II

    Given a collection of numbers that might contain duplicates, return all possible unique permutations ...

  4. 强大的CSS 属性选择符 配合 stylish 屏蔽新浪微博信息流广告

    新建一条微博域名下的规则: @-moz-document domain("weibo.com") { #v6_pl_rightmod_rank,#v6_pl_rightmod_ad ...

  5. Linux基本命令集合

    #Linux查看版本当前操作系统内核信息 uname -a #Linux查看当前操作系统版本信息 cat /proc/version #Linux查看版本当前操作系统发行版信息 cat /etc/is ...

  6. 正则表达式,sed简单用法

      一. 正则表达式 1. 常见的正则表达式字符 [] 匹配字符集 grep "bl[lo]g" oldboy.txt 表示字符‘l’或者‘o’都可匹配 * 重复前面字符任意次 g ...

  7. 0、PlayGround可视化

    Tensorflow新手通过PlayGround可视化初识神经网络 是不是觉得神经网络不够形象,概念不够清晰,如果你是新手,来玩玩PlayGround就知道,大神请绕道. PlayGround是一个在 ...

  8. 关闭tensorflow运行时的警告信息

    执行简单的矩阵相乘的程序: import tensorflow as tf m1 = tf.constant([[3,3]]) m2 = tf.constant([[2],[3]]) product ...

  9. Linux kill 指定进程名的四种方式

    方法1 pkill 进程名 方法2 killall 进程名 方法3 kill -9 $(ps -ef|grep 进程名关键字|grep -v grep|awk '{print $2}') 这个是利用管 ...

  10. python高级(五)—— python函数(一等对象)

    本文主要内容 一等对象 普通函数 & 高阶函数 可调用对象 & 自定义可调用类型 函数内省 函数注释 python高级——目录 文中代码均放在github上:https://githu ...