浅入深出Java输入输出流主线知识梳理




字节流 | 字符流 | |
输入流 | InputStream | Reader |
输出流 | OutputStream | Writer |
- public int read(); 读入一个字节,-1表示无
- public int read(byte b[]); 返回读入的字节数
- public int read(byte[] b, int off, int len);
- write()方法,它的功能是将字节写入流中
- public void write (int b);// 将参数b的低位字节写入到输出流
- public void write (byte b[]);// 将字节数组b[]中的全部字节顺序写入到输出流
- public void write(byte[] b, int off, int len);// 将字节数组b[]中从off开始的len个字节写入到流中
- public void flush (); 刷新缓存,实际写入到文件、网络
- public void close(); 关闭流
- public int read(); //返回:作为整数读取的字符(需要将int转char),如果已到达流的末尾,则返回 -1
- public int read(char b[]); //返回:读取的字符数
- public int read(char[] b, int off, int len);
- public void write (int b);// 将参数b的低两字节写入到输出流
- public void write (char b[]);// 将字符数组b[]中的全部字节顺序写入到输出流
- public void write(char[] b, int off, int len);// 将字节数组b[]中从off开始的len个字节写入到流中
- public void write( String s);// 将字符串写入流中
- public void write( String s, int off, int len);// 将字符串写入流中, off为位置,len为长度
- public void flush ();// 刷新流
- public void close();// 关闭流



节点类型 | 字节流 | 字符流 |
File 文件 |
FileInputStream FileOutputStream |
FileReader FileWriter |
Memory Array 内存数组 |
ByteArrayInputStream ByteArrayOutputStream |
CharArrayReader CharArrayWriter |
Memory String 字符串 |
StringReader StringWriter |
|
Pipe 管道 |
PipedInputStream PipedOutputStream |
PipedReader PipedWriter |
处理类型 | 字节流 | 字符流 |
Buffering 缓冲 |
BufferInputStream BufferOutputStream |
BufferedReader BufferedWriter |
Filtering 过滤 |
FilterInputStream FilterOutputSteam |
FilterReader FilterWriter |
Converting between bytes and character 字节流转换为字符流 |
InputStreamReader OutputStreamWriter 与字符编码有关 |
|
Object Serialization 对象序列化 |
ObjectInputStream ObjectOutputStream |
|
Data conversion 基本数据类型转化 |
DataInputStream DataOutputStream |
|
Counting 行号处理 |
LineNumberInputStream | LineNumberReader |
Peeking ahead 可回退流 | PushbackInputStream | PushbackReader |
Pinting 可显示流 | PrintStream | PrintWriter |
- BufferedReader br = new BufferedReader(
- new InputStreamReader(System.in));
- br.readLine();
- import java.io.*;
- public class Dump {
- public static void main(String[]args) {
- try
- {
- dump( new FileInputStream("aaa.bmp"), //FileInputStream节点流
- new FileOutputStream("bbb.bmp"));
- }
- catch(FileNotFoundException fex)
- {
- fex.printStackTrace();
- }
- catch (IOException ioe)
- {
- ioe.printStackTrace();
- }
- }
- public static void dump(InputStream src, OutputStream dest) //这里使用InputStream、OutputStream类型作为参数
- throws IOException
- {
- InputStream input = new BufferedInputStream(src); //使用处理流进行包装
- OutputStream output = new BufferedOutputStream(dest); //向上转型
- byte[] data = new byte[1024];
- int length = -1;
- while ((length = input.read(data)) != -1) { //read()将流中数据读取到data中
- output.write(data, 0, length);
- }
- input.close();
- output.close();
- }
- }
- import java.io.*;
- public class CopyFileAddLineNumber {
- public static void main (String[] args) {
- //将文件的每一行注释去掉,然后加上行号
- String infname = "CopyFileAddLineNumber.java";
- String outfname = "CopyFileAddLineNumber.txt";
- if( args.length >= 1 ) infname = args[0];
- if( args.length >= 2 ) outfname = args[1];
- try {
- File fin = new File(infname);
- File fout = new File(outfname);
- BufferedReader in = new BufferedReader(new FileReader(fin));
- PrintWriter out = new PrintWriter(new FileWriter(fout));
- int cnt = 0; // 行号
- String s = in.readLine();
- while ( s != null ) {
- cnt ++;
- s = deleteComments(s); //去掉以//开始的注释
- out.println(cnt + ": \t" + s ); //写出
- s = in.readLine(); //读入
- }
- in.close(); // 关闭缓冲读入流及文件读入流的连接.
- out.close();
- } catch (FileNotFoundException e1) {
- System.err.println("File not found!" );
- } catch (IOException e2) {
- e2.printStackTrace();
- }
- }
- static String deleteComments( String s ) //去掉以//开始的注释
- {
- if( s==null ) return s;
- int pos = s.indexOf( "//" );
- if( pos<0 ) return s;
- return s.substring( 0, pos );
- }
- }
- import java.io.*;
- class Person implements Serializable
- {
- String name;
- int age;
- Person(String name, int age) {
- this.name=name;
- this.age=age;
- }
- public String toString() {
- return name + "(" + age + ")";
- }
- }
- public class SerializeDemo {
- public static void main (String[] args)
- throws IOException
- {
- Person [] ps = {
- new Person("Li",18),
- new Person("Wang",19)
- };
- String fileName = "s.temp";
- //Serialize
- ObjectOutputStream output = new ObjectOutputStream(
- new FileOutputStream(fileName) );
- for(Person p : ps) output.writeObject(p);
- output.close();
- //deserialize
- ObjectInputStream input = new ObjectInputStream(
- new FileInputStream(fileName) );
- Person p = null;
- try {
- while( (p=(Person)input.readObject()) != null ) {
- System.out.println(p);
- }
- } catch(ClassNotFoundException ex) {}
- catch(EOFException eofex) {}
- input.close();
- }
- }
浅入深出Java输入输出流主线知识梳理的更多相关文章
- 浅入深出之Java集合框架(中)
Java中的集合框架(中) 由于Java中的集合框架的内容比较多,在这里分为三个部分介绍Java的集合框架,内容是从浅到深,如果已经有java基础的小伙伴可以直接跳到<浅入深出之Java集合框架 ...
- 浅入深出之Java集合框架(下)
Java中的集合框架(下) 由于Java中的集合框架的内容比较多,在这里分为三个部分介绍Java的集合框架,内容是从浅到深,哈哈这篇其实也还是基础,惊不惊喜意不意外 ̄▽ ̄ 写文真的好累,懒得写了.. ...
- 浅入深出之Java集合框架(上)
Java中的集合框架(上) 由于Java中的集合框架的内容比较多,在这里分为三个部分介绍Java的集合框架,内容是从浅到深,如果已经有java基础的小伙伴可以直接跳到<浅入深出之Java集合框架 ...
- 浅入深出Vue:环境搭建
浅入深出Vue:环境搭建 工欲善其事必先利其器,该搭建我们的环境了. 安装NPM 所有工具的下载地址都可以在导航篇中找到,这里我们下载的是最新版本的NodeJS Windows安装程序 下载下来后,直 ...
- 浅入深出Vue:工具准备之PostMan安装配置及Mock服务配置
浅入深出Vue之工具准备(二):PostMan安装配置 由于家中有事,文章没顾得上.在此说声抱歉,这是工具准备的最后一章. 接下来就是开始环境搭建了~尽情期待 工欲善其事必先利其器,让我们先做好准备工 ...
- 浅入深出Vue:工具准备之WebStorm安装配置
浅入深出Vue之工具准备(一):WebStorm安装配置 工欲善其事必先利其器,让我们先做好准备工作吧 导航篇 WebStorm安装配置 所有工具的下载地址都可以在导航篇中找到,这里我们下载的是最新版 ...
- 『浅入深出』MySQL 中事务的实现
在关系型数据库中,事务的重要性不言而喻,只要对数据库稍有了解的人都知道事务具有 ACID 四个基本属性,而我们不知道的可能就是数据库是如何实现这四个属性的:在这篇文章中,我们将对事务的实现进行分析,尝 ...
- 浅入深出Vue系列
浅入深出Vue导航 导航帖,直接点击标题即可. 文中所有涉及到的资源链接均在最下方列举出来了. 前言 基础篇 浅入深出Vue:工具准备之WebStorm搭建及配置 浅入深出Vue之工具准备(二):Po ...
- 浅入深出Vue:前言
浅入深出Vue系列文章 之前大部分是在做后端,后来出于某些原因开始接触Vue.深感前端变化之大,各种工具.框架令人眼花缭乱.不过正是这些变化,让前端开发更灵活. 博主在刚开始时,参考官网的各个步骤以及 ...
随机推荐
- Java Math.round()函数小结
Math类中提供了三个与取整有关的方法:ceil,floor,round,这些方法的作用于它们的英文名称的含义相对应,例如:ceil的英文意义是天花板,该方法就表示向上取整,Math.ceil(1 ...
- 数据库连接需要dll
连接oracle引用: Oracle.ManagedDataAccess.dll和Oracle.ManagedDataAccess.EntityFramework.dll, 连接sqlserver 连 ...
- JAVAWEB limit 分页 (转载)
原文来自于 https://www.jianshu.com/p/553fc76bb8eb 作者写的很不错 只是为了自己方便学习转载的 代码我就不贴了 我是 Oracle 要改一些代码 原 ...
- Fr3设置图片打印
见 fr3的文件内容,为xml <?xml version="1.0" encoding="utf-8"?> <TfrxReport Vers ...
- springcloud--ribbo(负载均衡)
ribbo:是Netflix公司开源的一个负载均衡的项目,是一个客户端负载均衡器,运行在客户端上. 实际运用案例(基于springcloud入门案例): 一.新建Module:springcloud- ...
- 从技术层面讲,如今的iPhone还能吊打其他手机吗?
自iPhone诞生之日起,他们就走了一条绝对精品主义路线,雍容华贵.价格高昂,十年帝国长盛不衰,其中,固然有乔布斯的粉丝文化和库克高超供应链管理的作用,但究其根本,还要回归到iPhone领先竞争对手一 ...
- 将数据写入已有的excel文件
/** * 将反馈结果写入excel中 * */ public static void writeExcelResult(String url,List<Integer> result) ...
- Python基础笔记:使用dict和set
dict 就和 C语言中的 map 的作用一样.查找非常快,以空间换时间! dict的使用: >>> d={'Mike':66,'Bob':77,'John':88} #定义一个di ...
- jquery实现常用UI布局
tab html <div class="tab"> <ul class="tab-title"> <li class=" ...
- Python函数(三)
递归函数 在函数内部,可以调用其他函数,如果一个函数的内部调用了自己本身,那么这个函数就是递归函数. 什么?函数还可以自己调用自己?那不是一个死循环吗?请看下例: # 求1-100的和 def sum ...