一、IO流概念: 输入输出流,也就是可以用来读写数据,以及上传下载数据。

二、分类:

1、从流的对象来分:   1)高端流:所有程序或者内存中的流都称为高端流。

2)低端流:所有外界设备中的流都是低端流。

如何区分到底是高端流还是低端流:

一般来说流的对象的后缀包含reader或者writer一般都是高端流,否则是低端流。(除了PrintStream,PrintStream也是高端流)

2、从数据的流向来分:   1)输入流:从外界设备-->程序,也就是读数据的动作。

2)输出流:从程序-->外界设备,也就是写数据的动作。

3、从数据的格式来分:   1)字节流:是用来处理声音或者图片等等二进制信息的流。

2)字符流:用来处理字符数据的流。

4、从流的对象是否需要包装来分:   1)原始流:流在实例化过程中,不需要通过另外一个流来包装自己的流。

2)包装流:流在实例化过程中,需要通过另外一个流来包装自己的流。

原始流都是低端流,包装流都是高端流。

三、常用IO流:

1、文件操作

字节流:

1)FileOutputStream

2)FileInputStream

字符流:

3)FileWriter

4)FileReader

区别:

(1)字节流的操作是直接与文件本身关联,不使用缓冲区;

(2)字符流的操作是通过缓冲区与文件关联。

一般都使用字节流,中文操作采用字符流。

2、内存操作流(多用于Java web)

5)ByteArrayOutputStream 内存向程序输出

6)ByteArrayInputStream   程序向内存输入

package io.demo;

import java.io.ByteArrayInputStream;

import java.io.ByteArrayOutputStream;

public class ByteArrayDemo {

public static void main(String[] args) {

String str = "Hello World";

ByteArrayInputStream bis = new ByteArrayInputStream(str.getBytes()); // 内存输入流,将str输入保存在内存中

ByteArrayOutputStream bos = new ByteArrayOutputStream(); // 内存输出流,内容输出

int temp = 0;

while ((temp = bis.read()) != -1) {

bos.write((char) temp);

}

System.out.println(bos.toString());// bos.toString()取出内存输出内容

}

}

3、BufferReader:缓冲区读取

package io.demo;

import java.io.BufferedReader;

import java.io.File;

import java.io.FileInputStream;

import java.io.InputStreamReader;

public class BufferReaderIODemo {

public static void main(String[] args) {

//输出c:\demo.txt文件的内容

File file = new File("C:" + File.separator + "demo.txt");

if (file.exists())

try {

InputStreamReader isr = new InputStreamReader(

new FileInputStream(file));

BufferedReader buf = new BufferedReader(isr);

while (true ) {

String str=buf.readLine();

if(null ==str){

break;

}

System. out.println(str);

}

buf.close();

} catch (Exception e) {

e.printStackTrace();

}

}

}

4、java提供两个类用于字节-字符流的转换

7)InputStreamReader:将字节的输入转换为字符流

8)OutputStreamWriter:将字符的输出流转换为字节流的输出

5、对象序列化:Serializable

9)ObjectOutputStream:对象序列化

10)ObjectInputStream:对象反序列化

首先需要实现序列化的对象必须实现 java.io.Serializable接口。

package io.demo;

import java.io.Serializable;

//Person類要實現 Serializable接口

public class Person implements Serializable {

private static final long serialVersionUID = 1L;

public Person(String name, int age) {

this.age = age;

this.name = name;

}

@Override

public String toString() {

return this .name + ":" + this.age ;

}

private String name;

private int age ;

}

package io.demo;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.ObjectInputStream;

import java.io.ObjectOutputStream;

public class ObjIODemo {

public static void main(String[] args) throws ClassNotFoundException {

File file = new File("c:" + File.separator + "demo.txt");

if (!file.exists()) {

try {

file.createNewFile();

} catch (IOException e) {

e.printStackTrace();

}

}

// 輸出流,以對象的形式寫入文件c:\demo.txt

ObjectOutputStream objo = null;

try {

objo = new ObjectOutputStream(new FileOutputStream(file));

objo.writeObject( new Person("諸葛亮" , 22));

objo.writeObject( new Person("魯樹" , 23));

objo.writeObject( new Person("孔明" , 25));

objo.writeObject( new Person("valiate" , 26));

objo.close();

} catch (Exception e) {

e.printStackTrace();

}

// 從c:\demo.txt以對象的形式讀出

ObjectInputStream obji = null;

try {

obji = new ObjectInputStream(new FileInputStream(file));

while (true ) {

Person per = (Person) obji.readObject();

if (null == per)

break;

System. out.print(per + " " );

per = (Person) obji.readObject();

}

obji.close();

} catch (Exception e) {

// 讀到文件結束符EOF會拋出EOFException異常,屏蔽異常信息輸出

// e.printStackTrace();

}

}

}

//諸葛亮:22 魯樹:23 孔明:25 valiate:26

java io流操作_【Java基础】IO流操作相关推荐

  1. java中override快捷键_【基础回溯1】面试又被 Java 基础难住了?推荐你看看这篇文章。...

    本文已经收录自 https://github.com/Snailclimb/JavaGuide  (59k+ Star):[Java学习+面试指南] 一份涵盖大部分Java程序员所需要掌握的核心知识. ...

  2. 没有基础的人学java开发难吗_零基础的人怎么学习Java

    编程语言Java,已经21岁了.从1995年诞生以来,就一直活跃于企业中,名企应用天猫,百度,知乎......都是Java语言编写,就连现在使用广泛的XMind也是Java编写的.Java应用的广泛已 ...

  3. java 线程 操作系统线程_线程基础:线程(1)——操作系统和线程原理

    1.概述 我在写"系统间通信技术专栏"的时候,收到很多读者的反馈.其中有一部分读者希望我抽空写一写自己关于对Java线程的使用经验和总结.巧的是,这个月我所在的技术团队也有很多同事 ...

  4. java字节流转字符串_字节流与字符流的区别及相互转换

    先来看一下流的概念: 在程序中所有的数据都是以流的方式进行传输或保存的,程序需要数据的时候要使用输入流读取数据,而当程序需要将一些数据保存起来的时候,就要使用输出流完成. 程序中的输入输出都是以流的形 ...

  5. java 执行oracle命令_利用oracle存储过程执行操作系统命令

    以下方法在WINNT,LINUX下的oracle9i上测试通过,java过程调用系统命令 首先给使用java存储过程的用户授予一定的权限 <>表示所有文件,也可以单独指定文件. r w e ...

  6. java中主函数_(基础)java中的主函数

    Java中的主函数 1.由JVM调用:JVM通过类名直接调用主函数(静态方法) 2.主函数的形参是一个字符串数组: String[] args 3.运行主函数时,如果没有向其传递参数,JVM会自动创建 ...

  7. java pv操作_理解同步的PV操作

    PV操作是Edsger Dijkstra提出的一种经典的解决同步不同执行线程的问题的方法,这种方法是基于一种叫信号量的特殊变量来实现的. 简单理解为就是通过共享变量+信号量实现的一种同步机制,其应用与 ...

  8. java 图片宽高_[Java]获取图片高和宽

    通过javax.imageio.ImageIO类中的read()函数读取的图片,存放在类java.awt.image.BufferedImage类中.调用BufferedImage类中的getWidt ...

  9. java 历遍 类_[Java] 遍历指定包名下所有的类(支持jar) | 学步园

    项目需要,仅做记录. 支持包名下的子包名遍历,并使用Annotation(内注)来过滤一些不必要的内部类,提高命中精度. 通过Thread.currentThread().getContextClas ...

  10. java语言金山打字_[Java教程]java实现 swing模仿金山打字 案例源码

    [Java教程]java实现 swing模仿金山打字 案例源码 0 2014-11-17 12:00:21 java实现 swing模仿金山打字 案例源码,更多Java技术就去Java教程网.http ...

最新文章

  1. 转:PHP Liunx 服务安全防范方案
  2. myeclipse在weblogic中的开发
  3. 【转载】linux 下 cpu使用情况分析
  4. 人工智能一定要用python吗_学人工智能一定要学Python吗?
  5. AI:狄拉克之海上的涟漪
  6. pandas 机器学习_机器学习的PANDAS
  7. Spring Boot Swagger3启动出现警告Unable to interpret the implicit parameter configuration with dataType
  8. 神奇DP [HNOI2004] 打砖块
  9. PHP自动售货发卡网源码,PHP自动售货发卡网源码 集成多种支付接口
  10. 极域电子教室创建和登录教师端的方法
  11. unity天空盒渐变_unity如何制作绚丽的太空天空盒?
  12. 中文书籍中对《人月神话》的引用(完结,共110本):软件工程通史1930-2019、实用Common Lisp编程……
  13. 1212_MISRA_C规范学习笔记_控制表达式规则要求
  14. 二项式定理与多变量函数的泰勒展开_拔剑-浆糊的传说_新浪博客
  15. 谷歌浏览器显示喔唷崩溃啦 google chrome浏览器崩溃了
  16. 实录丨戴琼海:深度学习遭遇瓶颈,全脑观测启发下一代AI算法
  17. Android LeakCanary使用详细教程
  18. 计算机弹歌光年之外谱子,邓紫棋《光年之外》完整钢琴谱
  19. C#参数详解一(形参和实参)
  20. Eclipse 配置JDK

热门文章

  1. php怎么上传函数,php上传函数怎么封装
  2. python建立多台电脑共用的_用virtualenv建立多个Python独立虚拟开发环境
  3. ubantu获取信息_Ubuntu 下查看CPU 信息命令
  4. 远程桌面连计算机名称变ipv6,利用ipv6,从家里远程连接到学校的电脑上
  5. equation在c语言中是什么意思,MathType出现此对象创建于Equation中的问题怎么办
  6. java开发文档怎么写_程序员该不该写技术文档,怎么写文档,易懂又能提升自己...
  7. php保存复制粘贴的网页内容,JS实现网站内容的禁止复制和粘贴、另存为
  8. onenote快捷键_高效飞快地使用onenote快捷键:快捷键功能架构解析
  9. vba 当前文件名_值得学习和珍藏的VBA常用编程代码语句
  10. python rest api_Python调用REST API接口的几种方式汇总