Java基础--常用IO流使用实例
读取文本文件:
 private static void ioDemo1() {
     try {
         FileReader fileReader = new FileReader("C:\\Users\\yan\\Desktop\\编码规范 (2).txt");
         int aa;
         aa = fileReader.read();
         while (aa!=-1) {//转换为char类型,否则是一堆数字
             System.out.print((char)aa);
             aa = fileReader.read();
         }
         fileReader.close();
     } catch (FileNotFoundException e) {
         e.printStackTrace();
     } catch (IOException e) {
         e.printStackTrace();
     }
 }
复制二进制文件:
 private static void ioDemo2() {
     try {
         FileInputStream fr = new FileInputStream("D:/test.xlsx");//不能使用FileReader(字符流)
         FileOutputStream fw = new FileOutputStream("D:/test1.xlsx");
         int read = fr.read();
         while (read!=-1) {
             fw.write(read);
             read=fr.read();
         }
         fw.flush();//杯子中没有饮料不代表饮料已喝完,此方法就是清空吸管中的饮料
         fw.close();
         fr.close();
     } catch (FileNotFoundException e) {
         e.printStackTrace();
     } catch (IOException e) {
         e.printStackTrace();
     }
 }
使用缓冲流复制二进制文件:
 private static void ioDemo3() {
     try {
         BufferedInputStream bis = new BufferedInputStream(new FileInputStream("D:/test.xlsx"));
         BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("C:\\Users\\yan\\Desktop\\test.xlsx"));
         byte[] buffer = new byte[2048];
         int read = bis.read(buffer);
         while(read!=-1)
         {
             bos.write(buffer, 0, read);
             read = bis.read(buffer);
         }
         bos.flush();
         bos.close();
         bis.close();
     } catch (FileNotFoundException e) {
         e.printStackTrace();
     } catch (IOException e) {
         e.printStackTrace();
     }
 }
数据流传递数据:
     private static void ioDemo4() {
         try {
             ByteArrayOutputStream baos = new ByteArrayOutputStream();
             DataOutputStream dos = new DataOutputStream(baos);
             long src = 1234454544;
             dos.writeLong(src);
             byte[] bytes = baos.toByteArray();
             ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
             DataInputStream dis = new DataInputStream(bais);
             long recieve;
             recieve = dis.readLong();
             System.out.println("recieve:" + recieve);
         } catch (IOException e) {
             e.printStackTrace();
         }
     }
PrintStream:
ObjectStream:
     private static void ioDemo5() {
         ObjectOutputStream oos = null;
         ObjectInputStream ois = null;
         Student s = new Student("悟空", 007, 95.5f);
         Student s1 = null;
         try {
             FileOutputStream fos = new FileOutputStream("C:\\Users\\yan\\Desktop/ccc.txt");
             oos = new ObjectOutputStream(fos);
             oos.writeObject(s);
             ois = new ObjectInputStream(new FileInputStream("C:\\Users\\yan\\Desktop/ccc.txt"));
             s1 = (Student) ois.readObject();
             System.out.println("姓名:" + s1.getName());
             System.out.println("学号:" + s1.getId());
             System.out.println("成绩:" + s1.getScore());
             fos.close();
         } catch (Exception e) {
             e.printStackTrace();
         } finally {
             try {
                 oos.close();
                 ois.close();
                 System.exit(-1);
             } catch (Exception e) {
                 System.exit(-1);
             }
         }
     }
 //实现Serializable的作用是可以将对象保存在文件中用于传输
 class Student implements Serializable {
     private static final long serialVersionUID = -111977186014986048L;
     private String name;
     private int id;
     private transient float score;//transient意思是转瞬即逝,起的作用是反序列化
     public Student(String name, int id, float score) {
         super();
         this.name = name;
         this.id = id;
         this.score = score;
     }
     public String getName() {
         return name;
     }
     public void setName(String name) {
         this.name = name;
     }
     public int getId() {
         return id;
     }
     public void setId(int id) {
         this.id = id;
     }
     public float getScore() {
         return score;
     }
     public void setScore(float score) {
         this.score = score;
     }
 }
Java基础--常用IO流使用实例的更多相关文章
- java基础之IO流(一)字节流
		java基础之IO流(一)之字节流 IO流体系太大,涉及到的各种流对象,我觉得很有必要总结一下. 那什么是IO流,IO代表Input.Output,而流就是原始数据源与目标媒介的数据传输的一种抽象.典 ... 
- java基础之IO流(二)之字符流
		java基础之IO流(二)之字符流 字符流,顾名思义,它是以字符为数据处理单元的流对象,那么字符流和字节流之间的关系又是如何呢? 字符流可以理解为是字节流+字符编码集额一种封装与抽象,专门设计用来读写 ... 
- Java基础之IO流整理
		Java基础之IO流 Java IO流使用装饰器设计模式,因此如果不能理清其中的关系的话很容易把各种流搞混,此文将简单的几个流进行梳理,后序遇见新的流会继续更新(本文下方还附有xmind文件链接) 抽 ... 
- 【java基础】]IO流
		IO流 概念: 流的概念源于unix中管道(pipe)的概念,在unix中,管道是一条不间断的字节流,用来实现程序或进程间的通信,或读写外围设备,外部文件等 一个流,一定能够会有源和去向(目的地),他 ... 
- java基础06 IO流
		IO用于在设备间进行数据传输的操作. Java IO流类图结构: IO流分类 字节流: InputStream FileInputStream BufferedInputStream Output ... 
- Java基础之IO流学习总结
		Java流操作有关的类或接口: Java流类图结构: 流的概念和作用 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输 ... 
- java基础44 IO流技术(输出字节流/缓冲输出字节流)和异常处理
		一.输出字节流 输出字节流的体系: -------| OutputStream:所有输出字节流的基类(抽象类) ----------| FileOutputStream:向文件输出数据的输出字节流(把 ... 
- java基础之io流总结一:io流概述
		IO流概念: 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.io流是实现输入和输出的基础,可以方便的实现数据的输入和输出操作. IO流的分类: 根据处理数据类型的不同分为:字符流 ... 
- Java中常用IO流之文件流的基本使用姿势
		所谓的 IO 即 Input(输入)/Output(输出) ,当软件与外部资源(例如:网络,数据库,磁盘文件)交互的时候,就会用到 IO 操作.而在IO操作中,最常用的一种方式就是流,也被称为IO流. ... 
随机推荐
- Clojure 下的 xpath 库
			clj-xpath 项目网站 Github 
- cocos2d-x开发记录:二,基本概念(动作,动画,坐标系统)
			既然我们选择用cocos2d,那么他里面的一些基本概念我们肯定是要熟悉下的,以下资料来源于官网,英语好的可以直接去官网看. 一.Actions(动作) 动作都由于CCNode对象发出.这些动作通常修改 ... 
- [na]802.1x协议无线认证协议&dot1x有线认证实验
			以前搞无线时候,会涉及到无线client接入方式的认证协议. 认证方式+加密方式+有线的dot1x. 注:以前都是doc粘贴到博客的,加上没写博客的习惯,因此会比较乱. EAP(扩展认证协议)是什么? ... 
- TP关联模型
			<?php class ExpertiseModel extends RelationModel { protected $_link=array( 'Role'=> array( 'ma ... 
- 【Android】2.1 PhonewordApp—第1个Android应用程序
			分类:C#.Android.VS2015: 创建日期:2016-02-04 本例子演示如何添加一个简单的单页导航,在此基础上,再演示如何在第2个页面中显示第1个页面中拨打过的所有电话号码. (1)通 ... 
- 使用PM2管理Node.js集群
			介绍 众所周知,Node.js运行在Chrome的JavaScript运行时平台上,我们把该平台优雅地称之为V8引擎.不论是V8引擎,还是之后的Node.js,都是以单线程的方式运行的,因此,在多核心 ... 
- HBase性能优化方法总结(三):读表操作
			本文主要是从HBase应用程序设计与开发的角度,总结几种常用的性能优化方法.有关HBase系统配置级别的优化,可参考:淘宝Ken Wu同学的博客. 下面是本文总结的第三部分内容:读表操作相关的优化方法 ... 
- C#中关于用户名和密码的验证问题。
			本次练习的目的是使用LinQ to XML,正则表达式,明天在这个基础上练习使用序列化和反序列化,继续加点儿小功能. 首先,这是一个窗体程序,设计如下: 存放用户名和密码的XML如下: 实现的代码如下 ... 
- Java Web开发中用Tomcat部署项目的三种方法
			第一种方法:在tomcat中的conf目录中,在server.xml中的,<host/>节点中添加: <Context path="/hello" docBase ... 
- 【C#】复制物体后,给副本命名的规则——用正则表达式
			需求:已经实现物体复制功能后,给新生成的副本进行命名. 问题:因为副本也能被复制,即副本的副本,所以复制品的命名规则会如下图所示. 尝试过用for循环和递归,发现在for循环内部递归返回的话会有问题, ... 
