IO流的介绍:

其实在我们现实生活中有很多流,例如:水流,电流,气流  等等都是是流,但在Java中IO流是指对数据的操作的流。

按照流的分类:

1:字节流和字符流

Reader和InputStream

2:输入流和输出流。

InputStream和OutputStream

字符流的抽象基类:

* Reader     (读文件)  ,         Writer(写文件)

由上面四个类派生的子类名称都是以其父类名作为子类的后缀:

如:FileReader和FileInputStream

字符流的介绍:

  1.    字符流中的对象融合了编码表一般是GBK  
  2.   字符流相对来说比较适合处理文本数据,不适合处理二进制数据
  3. 字符流以字符为单位,在处理中文时候不会出现乱码

字符流读写:

  1. 注意事项:

  2. 写入文件后必须要用flush()刷新。

  3. 用完流后记得要关闭流

  4. 使用流对象要抛出IO异常

  5. 定义文件路径时,可以用“/”或者“\\”。

  6. 在创建一个文件时,如果目录下有同名文件将被覆盖。

在读取文件时,必须保证该文件已存在,否则出异常。

字符流写数据实例:FileWriter

package com.itheima.test;

import java.io.FileWriter;
import java.io.IOException; public class Test { public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
FileWriter writer = new FileWriter("src/Test2.txt"); // 创建FileWriter对象
// 写入数据 writer.write("我是字符流");
writer.flush();
// 刷新
System.out.println("写入数据成功");
if (writer!=null) { writer.close();
// 关闭字符流
}
} }

字符流读数据实例:FileReader

package com.itheima.test;

import java.io.FileReader;
import java.io.IOException; public class Test2 { @SuppressWarnings("resource")
public static void main(String[] args) throws IOException {
//抛出异常
FileReader reader=null;
reader=new FileReader("src/Test2.txt");
//获取FileReader对象
char[] ch=new char[1024];
//使用字符数组来存读到的数据
int count;
//计算器
while ((count=reader.read(ch))!=-1) {
//判断是否还有数据,如果不等于-1那么还有数据
System.out.println(new String (ch,0,count));
//打印数据 }
reader.close();
     //关闭FileReader流
} }

字符流续写数据:FileWriter

package com.itheima.test;

import java.io.FileWriter;
import java.io.IOException; public class Test { public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
FileWriter writer = new FileWriter("src/Test2.txt",true);
//在有参构造函数中追加boolean值,true表示可以在文件末尾追加数据,false表示不能追加数据
// 创建FileWriter对象
// 写入数据
writer.write("我是字符流");
writer.flush();
// 刷新
System.out.println("写入数据成功");
if (writer!=null) { writer.close();
// 关闭字符流
}
} }

字节流的介绍:

字节流,主要用来处理字节或二进制对象。

字节流写文件实例:

package com.itheima.test;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException; public class FileDemo1 { public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
File file=new File("src/demo1.txt");
//如果有文件就不创建,没有则创建文件
FileOutputStream out=new FileOutputStream(file);
//创建FileOutputStream对象
byte by[]=new byte[1024];
//创建一个byte类型数组
String name="刘海清";
//名字
by=name.getBytes();
//把字符串转化为字节数组
out.write(by, 0, by.length);
//把字节数组写到文件里,从0到数组的长度
out.close();
//关闭FileOutputStream流
} }

字节流读取数据实例:

package com.itheima.test;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException; public class FileDemo2 { public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
File file=new File("src/demo1.txt");
FileInputStream in=new FileInputStream(file);
//输入流
int count;
//计数器
byte[] by=new byte[1024];
//字节数组
while((count=in.read(by))!=-1) {
//如果不等于-1那么还有数据
System.out.println(new String(by,0,count));
}
in.close();
//关闭流
} }

作业:实现一个文件拷贝的功能

package com.itheima.test;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException; public class FileDemo2 { public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
FileInputStream in=new FileInputStream("src/demo1.txt");
//输入流
int count;
//计数器
byte[] by=new byte[1024];
//字节数组
String name=null;
while((count=in.read(by))!=-1) {
//如果不等于-1那么还有数据
System.out.println(name=new String(by,0,count));
}
for (byte c : by) {
System.err.println(c);
}
File file=new File("src/demo2.txt");
FileOutputStream out=new FileOutputStream(file); out.write(by, 0, by.length);
out.close();
in.close();
//关闭流
} }

IO流的总结(一)的更多相关文章

  1. Java基础之IO流

    很长时间都没有更新了,最近在补充JavaSE的一些细节部分 关于IO流的一些总结 首先要介绍的是File类,File类用于对文件和目录的一些操作 1.创建文件CreateNewFile() 2.对文件 ...

  2. Java中IO流,输入输出流概述与总结

    总结的很粗糙,以后时间富裕了好好修改一下. 1:Java语言定义了许多类专门负责各种方式的输入或者输出,这些类都被放在java.io包中.其中, 所有输入流类都是抽象类InputStream(字节输入 ...

  3. Java:IO流与文件基础

    Java:IO流与文件基础 说明: 本章内容将会持续更新,大家可以关注一下并给我提供建议,谢谢啦. 走进流 什么是流 流:从源到目的地的字节的有序序列. 在Java中,可以从其中读取一个字节序列的对象 ...

  4. java IO流详解

    流的概念和作用 学习Java IO,不得不提到的就是JavaIO流. 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输 ...

  5. IO流总结

    IO流的作用:用于设备和设备之间的数据传输. IO流的概念:流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象. IO流的分类:  按照操作数据的类型分为两种: 字节流和字符流.  按 ...

  6. IO流

    流的概念和作用 学习JavaIO,不得不提到的就是JavaIO流. 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输特 ...

  7. Java IO流学习总结

    Java流操作有关的类或接口: Java流类图结构: 流的概念和作用 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输 ...

  8. 揭开Java IO流中的flush()的神秘面纱

    大家在使用Java IO流中OutputStream.PrintWriter --时,会经常用到它的flush()方法. 与在网络硬件中缓存一样,流还可以在软件中得到缓存,即直接在Java代码中缓存. ...

  9. java IO流 之 其他流

    一.内存操作流(ByteArrayInputStream.ByteArrayOutputStream) (一).   public class ByteArrayInputStream extends ...

  10. java IO流 之 字符流

    字符是我们能读懂的一些文字和符号,但在计算机中存储的却是我们看不懂的byte 字节,那这就存在关于字符编码解码的问题.所以在学习Io流的字符流前我们先了解些关于编码问题. 一.字符集与字符编码 1.什 ...

随机推荐

  1. 关于.NET编译的目标平台(AnyCPU,x86,x64) (转)

    关于.NET编译的目标平台(AnyCPU,x86,x64)(转) 今天有项目的代码收到客户的反馈,要求所有的EXE工程的目标平台全部指定成x86,而所有DLL工程的目标平台全部指定成AnyCPU . ...

  2. 安装Inotify-tools

    Inotify-tools 可以帮助Liunx快速实现文件同步. 1. 安装Inotify-tools mkdir /soft chmod /soft cd /soft wget http://git ...

  3. eclipse启动时 failed to create the java virtual machine 解决办法

    解决步骤: 1.打开eclipse解压目录下的配置文件eclipse.ini: 2.找到 --launcher.XXMaxPermSize 256M 并改为 --launcher.XXMaxPermS ...

  4. 【Zookeeper系列】ZooKeeper一致性原理(转)

    原文链接:https://www.cnblogs.com/sunddenly/p/4138580.html 一.ZooKeeper 的实现 1.1 ZooKeeper处理单点故障 我们知道可以通过Zo ...

  5. CSS属性选择器和部分伪类

    p[name]{background:red;} 只使用属性名p[name=ghr]{background:red;} 指定属性名,并指定了该属性的属性值p[name~=old]{background ...

  6. 在项目目录初始化composer

    1.创建一个仓库 2.进入项目目录,然后输入composer init命令开始为该项目初始化composer 3.初始化完成

  7. python3读文件时报错UnicodeDecodeError: 'gbk' codec can't decode byte 0x9f in position 2: illegal multibyte sequence

  8. CodeFirst简单演示的步骤

    CodeFirst简单演示的步骤 创建实体类[Student] public class Student { public long Id { get; set; } public string Na ...

  9. [教程]微信官方开源UI库-WeUI使用方法【申明:来源于网络】

    [教程]微信官方开源UI库-WeUI使用方法 [ 教程]微信官方开源UI库-WeUI使用方法 地址:http://www.weui.org.cn/?/article/1 微信公众号开发-WeUI使用说 ...

  10. vlan之间的通信-单臂路由与三层交换之间的互通

    注:本试验基于单臂路由通信,三层交换通信,请完成以上两个实验,并保证能够通信 熟练掌握单臂路由的配置 熟练掌握三层交换的配置 三层交换与单臂路由的互通 实验原理 三层交换机在原有二层交换机的基础之上增 ...