1:字节流

  字节流:用于处理以字节为单位的二进制文件(如音乐,图片等)

  InputStream 是抽象类 它的对应子类FileInputStream可以被实例化

  构造方法:

FileInputStream常用构造方法:

FileInputStream(File file) :通过File对象创建FileInputStream对象。

FileInputStream(String name) :通过文件(非“目录”)路径创建FileInputStream对象。

  常用方法:

int read():从输入流中读取单个字节的数据;如果已到达文件末尾,则返回 -1。

int read(byte[] b):从输入流中将最多b.length个字节的数据读入一个byte数组中,以整数形 式返回存入数组中的实际字节个数;如果已到达文件末尾,则返回 -1。                           void close():关闭此文件输入流并释放与此流有关的所有系统资源

OutputStream是抽象类,它的子类FileOutputStream可以被实例化

  构造方法:   

FileOutputStream(File file) :通过File对象创建FileOutputStream对象。

FileOutputStream(String name) :通过文件(非“目录”)路径创建 FileOutputStream对象。

FileOutputStream(File file, boolean append):通过File对象创建 FileOutputStream对象;第二个参数如果为true ,则字节将被写入文件的末尾而不是开头

  常用方法:

FileOutputStream常用方法:

void write(int b):将指定的单个字节数据写入此文件输出流。

void write(byte[] b, int off, int len):将byte数组中从off开始的len个字节写入此文件输出流。

void flush():刷新字节输出流并强制写出缓冲内所有字节数据。

void close():关闭此文件输出流并释放与此流有关的所有系统资源。

 
package com.xt.io;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException; public class FileInputStreamTest { public static void main(String[] args) {
FileInputStream fis=null;
FileOutputStream fos=null;
try {
/**
* 读和写都是站在程序的角度来看的,读文件用FileInputStream 写文件用FileOutPutStream
*/
fis=new FileInputStream("C:\\中心.jpg");
fos=new FileOutputStream("D:\\重要.jpg");
//第一种方法:一个字节一个字节的读
/*int date;
while((date=fis.read())!=-1) {
System.out.println(date);
}*/
//第二种方法:1024个字节1024个字节的读
byte[] bufferDate=new byte[1024];
int length;
while((length=fis.read(bufferDate))!=-1) {
fos.write(bufferDate, 0, length);
}
fos.flush();//强制全部读出来所有的数据
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally {
//释放资源
if(fos!=null) {
try {
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
} if(fis!=null) {
try {
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
 

1.1:缓冲字节流

  缓冲输入流:BufferedInputStream      BufferedInputStream(InputStream in):

  缓冲输出流:BufferedOutputStream  BufferedOutputStream(OutputStream out)

 
package com.xt.io;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException; public class BufferInputStreamTest { public static void main(String[] args) {
try {
BufferedInputStream bufferedInputStream=new BufferedInputStream(new FileInputStream("C:\\中心.jpg"));
BufferedOutputStream bufferedOutputStream=new BufferedOutputStream(new FileOutputStream("D:\\重要k.jpg")); /*int b;
while((b=bufferedInputStream.read())!=-1) {
bufferedOutputStream.write(b);
}*/ byte[] bufferByte=new byte[1024];
int length;
while((length=bufferedInputStream.read(bufferByte))!=-1) {
bufferedOutputStream.write(bufferByte, 0, length);
}
bufferedOutputStream.flush();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
 

2:字符流

Reader是抽象类,它的子类FileReader 可以被实例化

  构造方法:   

FileReader常用构造方法: FileReader(File file) :通过File对象创建FileReader对象。

                 FileReader(String fileName) :通过文件(非“目录”)路径创建FileReader对象。

  常用方法:

        FileReader常用方法: int read():从输入流中读取单个字符的数据,如果已到达流的末尾,则返回 -1 。

                   int read(char[] cbuf):从输入流中将最多cbuf.length个字符的数据读入一个char数组中,以整数形式返回存入

                       数组中的实际字节个数,如果已到达流的末尾,则返回 -1 。

                   void close():关闭此文件输入流并释放与此流有关的所有系统资源。

  Writer是抽象类,它的子类FileWriter可以被实例化

  构造方法:

      FileWriter(File file) :通过File对象创建FileWriter对象。

            FileWriter(String fileName) :通过文件(非“目录”)路径创建FileWriter对象。

             FileWriter(File file, boolean append):通过File对象创建FileWriter对象;第二个参数如果为true ,则字节将被写入文件的末尾而不是开头。

  常用方法:

      void write(int c):将指定的单个字符数据写入此文件输出流。

       void write(char[] cbuf, int off, int len):将char数组中从off开始的len个字符写入此文件输出流。

        void flush():刷新字符输出流缓冲。

       void close():关闭此文件输出流并释放与此流有关的所有系统资源。

 
package com.xt.io;

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Reader;
import java.io.Writer; class FileReaderAndFileWriter { public static void main(String[] args) {
Reader reader=null;
Writer writer=null;
try {
reader=new FileReader("C:\\unintall.log");
writer=new FileWriter("D:\\unintall.log"); char[] buffer=new char[1024];
int length;
while((length=reader.read(buffer))!=-1) {
writer.write(buffer, 0, length);
}
writer.flush();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
try {
if(writer!=null) {
writer.close();
}
} catch (IOException e) {
e.printStackTrace();
}
try {
if(reader!=null) {
reader.close();
}
} catch (IOException e) {
e.printStackTrace();
}
} }
}
 

2.1:缓冲字符流

  BufferedReader:缓冲字符输入流      BufferedReader(Reader in):

  BufferedWriter :缓冲字符输出流 BufferedWriter(Writer out)

 
package com.xt.io;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException; public class BufferReaderTest { public static void main(String[] args) {
try {
BufferedReader bufferedReader =new BufferedReader(new FileReader("C:\\unintall.log"));
BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter("D:\\unintall.log")); //第一种方法
// int date;
// while((date=bufferedReader.read())!=-1) {
// bufferedWriter.write(date);
// }
// bufferedWriter.flush();
//
//
//第二种方法
char[] bufferDate=new char[1024];
int length;
while((length=bufferedReader.read(bufferDate))!=-1) {
bufferedWriter.write(bufferDate, 0, length);
}
bufferedWriter.flush(); //第三种方法
// String lineDate;
// while((lineDate=bufferedReader.readLine())!=null) {
// bufferedWriter.write(lineDate);
// bufferedWriter.newLine();
// }
// bufferedWriter.flush();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
 

3:转换流

转化只能是字节向字符转化

  InputStreamReader(Reader in)  

  OutputStreamWriter(Writer out)

因为InputStreamReader是Reader的子类,所以同样可以用缓冲字符流BufferedReader(new InputStreamReader(Reader in))

t同理

 
package com.xt.io;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException; public class InputStreamReaderTest { public static void main(String[] args) {
try {
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(new FileInputStream("C:\\aa.txt"),"UTF-8"));
BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("D:\\bb.txt"), "UTF-8"));
String lineDate;
while((lineDate=bufferedReader.readLine())!=null) {
bufferedWriter.write(lineDate);
bufferedWriter.newLine();
}
bufferedWriter.flush();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
 

数据流

 
package com.xt.io;

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.EOFException;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException; public class DataInputStreamTest { public static void main(String[] args) {
double[] scores = {20,50,42,62};
DataOutputStream dataOutputStream=null ;
try {
dataOutputStream = new DataOutputStream(new FileOutputStream("D:\\data.data")) ;
for (double score : scores) {
dataOutputStream.writeDouble(score);
}
dataOutputStream.flush();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally {
if(dataOutputStream!=null) {
try {
dataOutputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
} try {
DataInputStream dataInputStream=new DataInputStream(new FileInputStream("D:\\data.data"));
while(true) {
System.out.println(dataInputStream.readDouble());
} } catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}catch(Exception e) { }
}
}

IO流——常用IO流详解的更多相关文章

  1. 2020你还不会Java8新特性?方法引用详解及Stream 流介绍和操作方式详解(三)

    方法引用详解 方法引用: method reference 方法引用实际上是Lambda表达式的一种语法糖 我们可以将方法引用看作是一个「函数指针」,function pointer 方法引用共分为4 ...

  2. Delphi中TStringList类常用属性方法详解

    TStrings是一个抽象类,在实际开发中,是除了基本类型外,应用得最多的. 常规的用法大家都知道,现在来讨论它的一些高级的用法. 先把要讨论的几个属性列出来: 1.CommaText 2.Delim ...

  3. Eclipse或Myeclipse常用快捷键组合详解

    Eclipse 是一个开放源代码的.基于Java的可扩展开发平台,就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境.. Eclipse(Myeclipse)中有很多便于开发的快捷键 ...

  4. maven常用插件配置详解

    常用插件配置详解Java代码    <!-- 全局属性配置 --> <properties> <project.build.name>tools</proje ...

  5. e lisp 常用缓冲区函数详解

    e lisp 常用缓冲区函数详解 函数名 函数概要 buffer-name 返回当前缓冲区的名字 buffer-file-name 返回当前缓冲区所指文件的名字,包括路径 current-buffer ...

  6. 转:springmvc常用注解标签详解

    Spring5:@Autowired注解.@Resource注解和@Service注解 - IT·达人 - 博客园--这篇顺序渐进,讲得超级好--此人博客很不错http://www.cnblogs.c ...

  7. Maya 常用环境变量详解

    Maya 常用环境变量详解 前言: Maya 的环境变量让用户可以很方便的自定义 Maya 的功能. 在 Maya 的 Help 帮助文档中有专门的一个章节< Environment Varia ...

  8. ExtJs常用布局--layout详解(含实例)

    序言: 笔者用的ExtJs版本:ext-3.2.0 ExtJs常见的布局方式有:border.form.absolute.column.accordion.table.fit.card.anchor ...

  9. 【第六课】Nginx常用配置下详解

    目录 Nginx常用配置下详解 1.Nginx虚拟主机 2.部署wordpress开源博客 3.部署discuz开源论坛 4.域名重定向 5.Nginx用户认证 6.Nginx访问日志配置 7.Ngi ...

  10. Modbus常用功能码协议详解

    Modbus常用功能码协议详解 01H-读线圈状态 1)描述:读从机线圈寄存器,位操作,可读单个或者多个: 2)发送指令: 假设从机地址位0x01,寄存器开始地址0x0023,寄存器结束抵制0x003 ...

随机推荐

  1. MySQL 启动、登录、退出和目录结构

    一.启动 MySQL 服务器启动方式有两种: (1)通过服务的方式自动启动 (2)手动启动的方式 1.windows 服务方式启动 操作步骤: 也可以在 cmd 窗口 输入 services.msc ...

  2. Java 之 Junit 单元测试

    Junit 单元测试 测试分类: 1.黑盒测试:不需要写代码,给输入值,看程序是否能够输出期望的值. 2.白盒测试:需要写代码.关注程序具体的执行流程. Junit 测试:(属于白盒测试) 步骤: 1 ...

  3. 【DRF框架】路由组件

    视图组件涉及的路由补充: from rest_framework.viewsets import ViewSetMixin 对路由进行了重新的分发,重写了as_view() 方法,重新封装了请求方法 ...

  4. centos 中的vsftpd 配置

    一.安装vsftpd 1.1 检查系统是否已经安装过vsftpd了 [root@localhost /]# rpm -aq vsftpd 如果返回结果显示: vsftpd--.el7.x86_64 # ...

  5. JSON 的简介与使用

    一.什么是JSON? JSON(javascript object notation)全称是 javascript 对象表示法,是一种数据交换的文本格式,用于读取结构化数据,提出目的是取代繁琐笨重的 ...

  6. 0015SpringBoot结合thymeleaf实现点击菜单高亮显示

    1.点击菜单,经过Controller层处理,正常定位到视图页面 2.编写抽象出公共片段的html,根据参数判断是否加高亮样式 3.多个目标页面引用步骤2中抽象出的公共片段,传不同的参数 具体实现如下 ...

  7. Markdown编辑器的使用测试

    北京高校(大标题) 北京电子科技学院(小标题) 计算机技术(一级标) 研究生(二级标) 列表(三级标) 姓名 - 扎西 - 卓玛 学号 - 01 - 02 超链接 [QQ邮箱](https://www ...

  8. Spring MVC框架及标签库

    1.Spring MVC技术 1. 当DispatcherServlet接到请求时,他先回查找适当的处理程序来处理请求.DispatcherServlet通过一个或者多个处理程序映射,将每个请求映射到 ...

  9. BZOJ1257: [CQOI2007]余数之和——整除分块

    题意 求 $\sum _{i=1}^n k \ mod \ i$($1\leq n,k\leq 10^9$). 分析 数据范围这么大 $O(n)$ 的复杂度也挺不住啊 根据取模的意义,$k \ mod ...

  10. Mac OS终端利器iTerm2(完美替代bash)

    iTerm2 iTerm一个为Mac OS X编写的,功能齐全的终端仿真程序:目标是在为用户提供OS X下最佳的命令行体验,iTerm 2有很多能够提升效率的实用功能.比如说窗口分割.热键窗口.智能搜 ...