大数据学习路线分享IO流学习笔记

黑客军团
• 阅读 130

大数据学习路线分享IO流学习笔记-IO流(input/output):

作用:实现两个设备之间数据的传递

设备:磁盘(硬盘),内存,键盘,文件,网络,控制台

网络:当前主机之外的网上资源

分类:

根据操作的方式:输入流和输出流 ---因内存为参考

根据数据的类型:字节流和字符流

字节流:

字节输入流:InputStream

字节输出流:OutputStream

字符流的两个父类:

字符读入流(将数据输入内存):Reader

字符写出流(将数据从内存取出):Writer

实例:研究字符流

以磁盘的数据存储为例,将数据写入文件

分析:因为操作的是文本,所以使用字符流

  • 写入文件-----写出流------FileWriter
  • 读文件------读入流-------FileReader

代码:

FileWriter fileWriter = new FileWriter("test1.txt");

//注意点:

//一:如果只写文件的名字,不写具体路径,默认路径是当前的工程

//二:对于关联的文件,如果之前不存在,程序会自动创建一个,如果存在,会将原来的内容覆盖

//三:可以自己指定路径,但是必须保证路径是真实存在的,否则报异常---FileNotFountException(系统找不到指定的路径。)

fileWriter.write("chenchen");

//四:在执行write方法时,数据被临时放到了流对象的内部数组中,这个数组是一个字节数组,会默认去查编码表

//fileWriter.flush();

//刷新---将临时数组中的数据放入磁盘

fileWriter.close();

//关闭流--两个功能关闭流 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:workspaceBigDataSZ1903N19srccomqianfengtestDemo1.java:绝对路径

BigDataSZ1903N19srccomqianfengtestDemo1.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系统 换行符 rn linux/unix 换行符 n

//bufferedWriter.write("rn");//换行

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();




点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Wesley13 Wesley13
3年前
ios开发之streams概览
流是位数据通过通信路径的连续传送序列。它是单向的,从一个应用程序的角度,流可以是输入流(读操作流)或者输出流(写操作流),除了基于文件的流之外,其余的都是nonseekable的。一旦流数据被提供或者被使用,数据就不能够从流中获取到。Cocoa包括三种与流有关的类:NSStream,NSInputStream,NSOutputStream.NSS
并发编程
并发编程笔记本博客根据学习而做的笔记,链接如下一、基本概念1、进程与线程进程程序由指令和数据组成,但这些指令要运行,数据要读写,就必须将指令加载至CPU,数据加载至内存。在指令运行过程中还需要用到磁盘、网络等设备。进程就是用来加载指令、管理内存、管理IO的。当一个程序被运行,从磁盘加载这个程序的代码至内存,这时就开启了一个进程。进程
Wesley13 Wesley13
3年前
NIO入门
1、I/O输入输出,所有的IO都被视作是单个字节的移动,通过stream对象一次移动一个字节。流IO负责把对象转换为字节,然后再转换为对象。NIO提供了二套NIO,一套是针对标准输入输出NIO,另一套是网络编程NIO2、流与块的比较NIO和IO最大的区别是数据打包和传输方式,IO是以流的方式来处理数据,而NIO是以块的方式处理数据。面向块的IO
Wesley13 Wesley13
3年前
IO(输入输出)
IO流有很多种,按照操作数据的不同,可以分为字节流和字符流,按照数组传输方向的不同又可分为输入流和输出流。字节流的输入输出流分别用java.io.InputStream和java.io.OutputStream表示,字符流的输入输出流分别用java.io.Reader和java.io.Writer表示。!(https://oscimg
Wesley13 Wesley13
3年前
Java IO输入输出
学前知道Java的IO使用“流”的概念来表示。IO流涉及到数据源和目的地。流,是从源“流向”目的的数据流。Java将各种数据源和目标之间数据的传输统一抽象为流,通过对流对象的操作来完成I/O功能。输入输出实际都是对内存而言的。数据源可以是键盘、文件、应用程序、鼠标、网络连接。
Wesley13 Wesley13
3年前
Java NIO和IO的区别
IO               NIO面向流           面向缓冲阻塞IO           非阻塞IO无               选择器面向流与面向缓冲JavaNIO和IO之间第一个最大的区别是,IO是面向流的,NIO是面向缓冲区的。JavaIO面向流意味着每次从流中
Wesley13 Wesley13
3年前
Java IO流
IO流框架!IO框架(https://oscimg.oschina.net/oscnet/d6baa9ffd0adc3ecffd9fef90e48936437f.png)IO流概述IO即输入与输出,Java把不同来源和目标的数据抽象为流,在此基础上对流进行数据操作IO流分类按流向分:
Wesley13 Wesley13
3年前
Java IO流学习总结
Java流操作有关的类或接口:!(http://static.oschina.net/uploads/img/201408/07180414_8pxV.png)Java流类图结构:!(http://static.oschina.net/uploads/img/201408/07180414_5xgf.jpg)流的概念和作用
Wesley13 Wesley13
3年前
Java IO
概述Java中输入、输出的处理通过java.io包下的类和接口来支持,在这个包下主要包括输入、输出两种IO流,每种输入、输出流又可以分为字节流和字符流。字节流以字节为单位来处理输入输出,字符流则以字符为单位。除此之外,Java的IO流使用了一种装饰器设计模式,它将IO流分成底层节点流和上层处理流。节点流用于和底层物理存储节点直接关联,不同
美凌格栋栋酱 美凌格栋栋酱
5个月前
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(
黑客军团
黑客军团
Lv1
人生到处知何似,应似飞鸿踏雪痕。泥上偶然留指爪,鸿飞哪复计西东。
文章
3
粉丝
0
获赞
0