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. UI5-技术篇-SEGW DEEP ENTITY测试

    参考:http://blog.sina.com.cn/s/blog_a7d67d810102xgms.html 一般调用后端的OData服务需要同时传输多个记录表对业务逻辑进行处理(例如BAPI),今 ...

  2. java,单文件和多文件上传代码范例

    上传一个单文件,用request.getFile得到文件(下面的功能是上传到阿里云) @RequestMapping(value = {"/content"}, method = ...

  3. Django组件之forms

    forms:校验字段功能 针对一个实例:注册用户讲解. 模型:models.py class UserInfo(models.Model): name=models.CharField(max_len ...

  4. NSIP

    1. 第一章 信息安全概述 信息:信息是有意义的数据,具有一定的价值,是一种适当保护的资产,数据是是客观事务属性的记录,是信息的具体表现形式,数据经过加工处理之后 就是信息,而信息需要经过数字处理转换 ...

  5. nginx的应用【虚拟主机】

    Nginx主要应用: 静态web服务器 负载均衡 静态代理虚拟主机 虚拟主机 :虚拟主机,就是把一台物理服务器划分成多个“虚拟”的服务器,这样我们的一台物理服务器就可以当做多个服务器来使用,从而可以配 ...

  6. JVM系列三:内存分配与回收策略

    内存分配策略 1.对象优先分配在新生代Eden区 多数情况下,对象分配在新生代的Eden,若Eden区域内存不够,则引发一次Minor GC 2.大对象直接进入老年代 大对象直接分配在老年代,避免新生 ...

  7. P2921 [USACO08DEC]在农场万圣节[SCC缩点]

    题目描述 每年,在威斯康星州,奶牛们都会穿上衣服,收集农夫约翰在N(1<=N<=100,000)个牛棚隔间中留下的糖果,以此来庆祝美国秋天的万圣节. 由于牛棚不太大,FJ通过指定奶牛必须遵 ...

  8. dos中查找端口的PID,并在任务管理器中处理端口

    本文来源https://www.cnblogs.com/lsyf/p/8979012.html 1.查看所有端口进程 首先点击开始菜单选择运行,接着在运行对话框中输入“cmd”,回车打开命令提示符窗口 ...

  9. Robot Framework--接口实例一

    需求:api/car/detail/recommendcar.json   接口返回的车辆数量少于等于20且车辆不能重复 分析:统计接口中返回的列表的长度,再把carid拿出来组成一个新的列表,判断这 ...

  10. 三、vue基础--表单绑定

    表单输入绑定:可以一起使用以下修饰符,都是在v-model里面使用的,有input,radio,textrea,select中都可以使用绑定 1.单选按钮,代码如下: <div id='app' ...