大数据学习路线分享IO流学习笔记-IO流(input/output):java
做用:实现两个设备之间数据的传递linux
设备:磁盘(硬盘),内存,键盘,文件,网络,控制台windows
网络:当前主机以外的网上资源数组
分类:网络
根据操做的方式:输入流和输出流 ---因**内存**为参考学习
根据数据的类型:字节流和字符流大数据
字节流:编码
字节输入流:InputStreamspa
字节输出流:OutputStreamunix
字符流的两个父类:
字符读入流(将数据输入内存):Reader
字符写出流(将数据从内存取出):Writer
实例:研究字符流
以磁盘的数据存储为例,将数据写入文件
分析:由于操做的是文本,因此使用字符流
* 写入文件-----写出流------FileWriter
* 读文件------读入流-------FileReader
代码:
FileWriter fileWriter = new FileWriter("test1.txt");
//注意点:
//一:若是只写文件的名字,不写具体路径,默认路径是当前的工程
//二:对于关联的文件,若是以前不存在,程序会自动建立一个,若是存在,会将原来的内容覆盖
//三:能够本身指定路径,可是必须保证路径是真实存在的,不然报异常---FileNotFountException(系统找不到指定的路径。)
fileWriter.write("chenchen");
//四:在执行write方法时,数据被临时放到了流对象的内部数组中,这个数组是一个字节数组,会默认去查编码表
//fileWriter.flush();
//刷新---将临时数组中的数据放入磁盘
fileWriter.close();
//关闭流--两个功能:a:关闭流 b:刷新
//第五个注意点:流对象使用完后必须关闭
//fileWriter.write("haha");
//第六个注意点:当流对象关闭以后,不能再进行操做,不然会报异常:Stream closed
//fileWriter = new FileWriter("test2.txt",true);
//文件的续写:FileWriter(String file,boolean value)
//当value位true的时候,不会将原来的内容覆盖,会接着写
读内容:
实例:从文件中读取内容,并显示在控制台------FileReader
//1.建立FileReader的对象
FileReader fileReader = new FileReader("test2.txt");
//2.读
read():一个字符一个字符的读,每次读出一个字符
read(数组):一次能够读出多个字符 ,数组的做用:每次会将读出的字符临时放到这个数组中
/
//read():一个字符一个字符的读,每次读出一个字符 while ((num = fileReader.read())!= -1) { System.out.println((char)num); }
//read(数组):一次能够读出多个字符 ,数组的做用:每次会将读出的字符临时放到这个数组中
/数组是临时存放数据的地方,咱们会将读到的字符放到临时数组中,数组的大小决定了咱们一次能够读到的字符个数.
通常这个数组的大小<=1kB
返回值表明本次读到的真实的字符个数,若是返回值是-1表明读完了
char[] arr = new char[2]; int num = 0; while ((num = fileReader.read(arr)) != -1) { System.out.println(new String(arr,0,num)+" num:"+num); }
实例:完成文件的复制
将Demo1的东西复制到Demo1copy.java
D:\workspace\BigDataSZ1903N19\src\com\qianfeng\test\Demo1.java:绝对路径
BigDataSZ1903N19\src\com\qianfeng\test\Demo1.java:相对路径
相对路径:从路径中间的某个部位开始一直到当前的文件
绝对路径:一个文件的完整路径,从根目录开始到当前的文件
补充知识:
\表明转义字符 \t:制表符 \n换行符 \\:表示普通的\
在表明路径的时候,\\与/是一个意思.
//1.建立读入流和写出流
FileReader fileReader = new FileReader("D:\\workspace/BigData1923N19\\src\\com\\qf\\test\\Demo1.java");
FileWriter fileWriter = new FileWriter("Demo1copy.java");
字符缓冲流(字符缓冲区)
定义:为了提升读写的能力,自己没有读写的能力,要想进行读写就必须借助于字符流实现.
能够将缓冲流类比于催化剂或者高速的小车
字符缓冲流分类:
字符缓冲读入流:BufferedReader 没有读的能力
字符缓冲写出流:BufferedWriter 没有写的能力
//0.建立字符写出流对象
//1.建立字符缓冲写出流对象
BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter("text3.txt"));
//2.写
bufferedWriter.write("bingbing");
//windows系统 换行符 \r\n linux/unix 换行符 \n
//bufferedWriter.write("\r\n");//换行
bufferedWriter.newLine();//换行---支持跨平台
bufferedWriter.write("chenchen");
//3.关闭资源 a.关闭内部的写出流 b.关闭本身 c.刷新
bufferedWriter.close();
//1.建立字符缓冲读入流
BufferedReader bufferedReader = new BufferedReader(new FileReader("text3.txt"));
//一次读一行 readline()
//原理:一个字符一个字符的读,直到读到换行符为止.而后将全部读到的字符返回
//注意点:不会将当前的换行符返回 ;返回值就是咱们读到的内容.若是读完了,返回null
String data = null; while ((data = bufferedReader.readLine()) != null) { System.out.print(data); //System.out.println();//换行 System.out.print("\r\n"); } bufferedReader.close();