1、在io包中,提供了两个与平台无关的数据操作流

  数据输出流(DataOutputStream)

  数据输入流(DataInputStream)

2、通常数据输出流会按照一定的格式将数据输出,再通过数据输入流按照一定的格式将数据读入

-------------------------------------------------------------------------------------

(1)DataOutputStream

package org.example.io;

import java.io.DataOutputStream;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class TestDataOutputStream {

  public static void main(String[] args) throws IOException {
    DataOutputStream dos = null;
    File f = new File("e:\\s\\test\\a.txt");
    dos = new DataOutputStream(new FileOutputStream(f));
    String[] name = {"衬衫", "手套", "围巾"};
    float[] price = {98.3f, 30.3f, 50.5f};
    int[] num = {3, 2, 1};
    for (int i = 0; i < name.length; i++) {
      dos.writeChars(name[i]);
      dos.writeChar('\t');
      dos.writeFloat(price[i]);
      dos.writeChar('\t');
      dos.writeInt(num[i]);
      dos.writeChar('\n');
    }
    dos.flush();
    dos.close();
  }

}

-------------------------------------------------------------------------------------

(2)DataInputStream

package org.example.io;

import java.io.DataInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

public class TestDataInputStream {

  public static void main(String[] args) {

    DataInputStream dis = null;
    File f = new File("e:\\s\\test\\a.txt");
    try {
      dis = new DataInputStream(new FileInputStream(f));
      String name = null;
      float price = 0.0f;
      int num = 0;
      char[] temp = null;  /* 接收商品名称 */
      int len = 0;  /* 保存读取数据的个数 */
      char c = 0;  /* '\u0000' */
      while (true) {
        temp = new char[200];
        len = 0;
        while ((c = dis.readChar()) != '\t') {  /* 单个字符地循环读取商品名称 */
          temp[len] = c;
          len++;
        }
        name = new String(temp, 0, len);  /* 商品名称 */
        price = dis.readFloat();  /* 读取价格 */
        dis.readChar();  /* 读取\t */
        num = dis.readInt();  /* 读取数量 */
        dis.readChar();  /* 读取\n */
        System.out.println("Name:"+name+"\t\tPrice:"+price+"\tNum:"+num);
      }
    } catch (FileNotFoundException e2) {
      e2.printStackTrace();
    } catch (IOException e) {
      e.printStackTrace();
    } finally {
      if (dis != null) {
        try {
          dis.close();
        } catch (IOException e) {
          e.printStackTrace();
        }
      }
    }
  }

}

DataOutputStream and DataInputStream的更多相关文章

  1. Java基础-IO流对象之数据流(DataOutputStream与DataInputStream)

    Java基础-IO流对象之数据流(DataOutputStream与DataInputStream) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.数据流特点 操作基本数据类型 ...

  2. Java IO操作——数据操作流DataOutputStream和DataInputStream的使用

    学习目标  掌握DataOutputStream和DataInputStream的作用 可以使用DataOutputStream和DataInputStream写入和读入数据 数据操作流 在io包中, ...

  3. JAVA IO操作:数据操作流:DataOutputStream和DataInputStream

    掌握DataOutputStream和DataInputStream的作用. 可以使用DataOutputStream和DataInputStream写入和读取数据. 在IO包中提供了两个与平台无关的 ...

  4. [Java] 读写字节数据,过滤流DataOutputStream和DataInputStream

    package test.stream; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io ...

  5. 数据操作流DataOutputStream、DataInputStream类

    [例子1] import java.io.DataOutputStream; import java.io.File; import java.io.FileOutputStream; import ...

  6. 数据流:DataOutputStream与DataInputStream的使用

    看这两个类的名字就不难猜测出它们的类关系图. DataOutputStream: 主要是一些writeXxx()操作,写出, 相当于序列化 DataInputStream: 主要是一些readXxx( ...

  7. Java基础:浅谈数据输入流/数据输出流《DataInputstream类与DataOutputstream类》

     一.理论概述 数据输入/输出流(DataInputStream类与DataOutputStream类) 允许应用程序以与机器无关的方式从底层输入流中读取基本Java数据类型. 说白了就是,当读取一个 ...

  8. Java IO(十一) DataInputStream 和 DataOutputStream

    Java IO(十一) DataInputStream 和 DataOutputStream 一.介绍 DataInputStream 和 DataOutputStream 是数据字节流,分别继承自 ...

  9. java io系列15之 DataOutputStream(数据输出流)的认知、源码和示例

    本章介绍DataOutputStream.我们先对DataOutputStream有个大致认识,然后再深入学习它的源码,最后通过示例加深对它的了解. 转载请注明出处:http://www.cnblog ...

随机推荐

  1. UnitZ Battlegrounds beta5 - Unity吃鸡类型游戏模版 源码 仿绝地求生

    Requires Unity 2018.2.6 or higher.The first battle royale game starter kit on Asset Store, all syste ...

  2. ThreadPoolExecutor源码详解

    ExecutorService使用线程池中可用的线程执行每个提交的任务,这些线程通常都是使用工厂方法配置 线程池解决两种不同的问题:提高处理大量异步任务的性能(通过减少每个线程的唤醒时间) 提供一种管 ...

  3. 实用矩阵类(Matrix)(带测试)

    引言: 无意间看到国外一个网站写的Matrix类,实现了加减乘除基本运算以及各自的const版本等等,功能还算比较完善,,于是记录下来,以备后用: #ifndef MATRIX_H #define M ...

  4. spring boot整合websocket

    转载自:https://www.cnblogs.com/GoodHelper/p/7078381.html 一.WebSocket简单介绍 随着互联网的发展,传统的HTTP协议已经很难满足Web应用日 ...

  5. IIS7/8下提示 HTTP 错误 404.13 - Not Found 请求筛选模块被配置为拒绝超过请求内容长度的请求

    IIS7的设置和IIS6有很多不同之处,这里提到的的是一个上传附件大小设置的问题. HTTP 错误 404.13 - Not Found 请求筛选模块被配置为拒绝超过请求内容长度的请求. 原因:Web ...

  6. gem 安装问题

    错误提示: ERROR: While executing gem ... (Gem::RemoteFetcher::FetchError) SSL_connect returned=1 errno=0 ...

  7. php使用redis的有序集合zset实现延迟队列

    延迟队列就是个带延迟功能的消息队列,相对于普通队列,它可以在指定时间消费掉消息. 延迟队列的应用场景: 1.新用户注册,10分钟后发送邮件或站内信. 2.用户下单后,30分钟未支付,订单自动作废. 我 ...

  8. anaconda使用方法

    我是用的win10.想写爬虫,所以使用了  anaconda .总结一下使用的方法. 安装阶段跳过.: 再终端输入  jupyter notebook  然后就会在. 浏览器显示一个网页.其实这个也不 ...

  9. Python调用Linux bash命令

    import subprocess as sup  # 以下注释很多(为了自己以后不忘), 如果只是想在python中执行Linux命令, 看前5行就够了 # 3.5版本之后官方推荐使用sup.run ...

  10. Vim 入门:基础

    为工作或者新项目学习足够的 Vim 知识. -- Bryant Son 我还清晰地记得我第一次接触 Vim 的时候.那时我还是一名大学生,计算机学院的机房里都装着 Ubuntu 系统.尽管我在上大学前 ...