一、理论概述

数据输入/输出流(DataInputStream类与DataOutputStream类) 允许应用程序以与机器无关的方式从底层输入流中读取基本Java数据类型。 说白了就是,当读取一个数据时,不用再关心这个数值是那种字节 。

 二、用法:
 DataInputStream类与DataOutputStream类的构造方法如下:
 1,DataInputStream(InputStream in):使用指定的基础InputStream创建一个DataInputStream 。
 2,DataOutputStream(OutputStream out):创建一个数据输出流,将数据写入指定基础输出流 。
 DataInputStream提供了三种写入字符串的方法:
 1)writeBytes(String str)。
 2)writeChars(String str)。
 3)writeUTF(String str)。

由于java中的字符是Unicode编码,是双字节的,writeByte只是将字符中的每一个字符的低字节内容写入目标设备中;而writeChars将字符串中的
    每一个字符的两个字节的内容都写到目标设备中;writeUTF将字符串按UTF编码后的字节长度写入目标设备中,然后才是每一个字节的UTF编码。
    DataInputStream只提供了一个ReadUTF()方法返回字符串。这是因为要在一个连续的字节流读取一个字符串,如果没有特殊标记作为一个字符
    串的结尾,并且不知道这个字符串的长度,就无法知道读取到什么位置才是这个字符串的结束。DataOutputStream类中只有writeUTF()方法向目
    标设备中写入字符串的长度,所以也能准确的读回写入字符串。
    
    Demo :

package com.wei;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
/**
* DataOutputStream和DataInputStream
* 的用法
* @author Weijianyi
*
*/
public class Demo01 {
public static void main(String[] arrgs) {
try {
// 创建FileOutputStream对象
FileOutputStream f = new FileOutputStream("F://demo.txt");
// 创建DataOutputStream对象
DataOutputStream d = new DataOutputStream(f);
// 写入磁盘文件数据
d.writeUTF("使用writeUTF向磁盘写入数据");
d.writeChars("使用writeChars向磁盘写入数据");
d.writeBytes("使用writeByte向磁盘写入数据");
// 将流关闭
d.close();
// 创建FileInputStream对象
FileInputStream fi = new FileInputStream("F://demo.txt");
// 创建DtatInputStream对象
DataInputStream da = new DataInputStream(fi);
String str = da.readUTF();
System.out.println(str);
} catch (Exception e) {
e.printStackTrace();
}
}
}

Java基础:浅谈数据输入流/数据输出流《DataInputstream类与DataOutputstream类》的更多相关文章

  1. 【推荐】JAVA基础◆浅谈3DES加密解密

    国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私 ...

  2. Java基础 FileInputStream/ FileOutputStream / 字节输入流 字节输出流实现文件的复制

    FileInputStream/FileOutputStream的笔记: /**(FileInputStream/FileOutputStream四个步骤: ①声明②加载地址③read/write④c ...

  3. JAVA基础细谈

    JAVA基础细谈 一. 源文件和编译后的类文件     源文件的本质就是程序文件,是程序员编写,是人看的.而编译后的类文件是给电脑看的文件.一个类就是一个文件,无论这个类写在哪里,编译以后都是一个文件 ...

  4. 浅谈SQL Server数据内部表现形式

    在上篇文章 浅谈SQL Server内部运行机制 中,与大家分享了SQL Server内部运行机制,通过上次的分享,相信大家已经能解决如下几个问题: 1.SQL Server 体系结构由哪几部分组成? ...

  5. C#核心基础--浅谈类和对象的概念

    浅谈类和对象的概念 一.什么是类?什么是对象? 学习一门面向对象编程语言,我们必须得知道什么是类?什么是对象? 类(Class)实际上是对某种类型的对象定义变量和方法的原型.它表示对现实生活中一类具有 ...

  6. 牛客网Java刷题知识点之输入流、输出流、字节流、字符流、字节流的抽象基类(InputStream、OutputStream)、字符流的抽象基类(Reader、Writer)、FileWriter、FileReader

    不多说,直接上干货! IO流用来处理设备之间的数据传输. java对数据的操作是通过流的方式. java用于操作流的对象都在IO包中. IO流按操作数据分为两种:字节流和字符流. IO流按流向分为:输 ...

  7. Java的IO流以及输入流与输出流的异同

    一:流的基本概念:           Java中I/O操作主要是指使用Java进行输入,输出操作. Java所有的I/O机制都是基于数据流进行输入输出,这些数据流表示了字符或者字节数据的流动序列.J ...

  8. java多线程浅谈

    当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法? 分这几种情况:    1.其他方法前是否加了synchronized关键字,如果没加,则能.    2 ...

  9. android的Binder通信机制java层浅谈-android学习之旅(88)

    1.Service Manager的Java代理对象 在Java层中,Service Manager的代理对象类型为ServiceManagerProxy.它继承并且实现了IServiceManage ...

随机推荐

  1. redis day02

    Redis -带过期时间的key  如何删除掉的? 在redis内部有个  过期字典,所有带过期时间的都有过期字典 默认情况下 redis每秒会进行着10次过期字典的扫描,在每一次扫描过程里,执行如下 ...

  2. springCloud负载均衡Ribbon和Feign的区别

    1.什么是负载均衡: 负载均衡(Load Balance)是分布式系统架构设计中必须考虑的因素之一,它通常是指,将请求/数据[均匀]分摊到多个操作单元上执行,负载均衡的关键在于[均匀]. 2.常见的负 ...

  3. 如何使用css伪类,实现div左上角出现封面等提示信息

     HTML <div class="ui-cover-tip”><div> CSS .ui-cover-tip{ position: relative; width: ...

  4. Windows_Management_Instrumentation

    WMI是管理系统中的核心 使用本工具的前提是:系统的服务列表中,Windows_Management_Instrumentation(winmgmts)这个服务处于运行状态.如果处于关闭状态,请在运行 ...

  5. BGP2

    1) 按照拓扑搭建网络,在所有AS间使用直连接口建立EBGP邻居关系: 2) 在公司总部AS400中,R4与R5,R5与R7,R7与R6,R6与R4间使用环回接口建立IBGP邻居关系,IGP协议使用O ...

  6. java通过jdbc插入中文到mysql显示乱码(问号或者乱码)

    对于很多初学者来说,中文字符编码不相同的问题,是一个很烦躁的问题!! 因为很多时候,我们并不知道,到底是哪一层出现了问题? 在这里稍微做个总结~也怕自己今后忘了!! 其实也就三层: 1.前端页面 2. ...

  7. centos7 ModuleNotFoundError: No module named 'users'

    centos7下运行django项目时ModuleNotFoundError: No module named 'users' 由于我的项目目录是下面这样: 因为找不到users的路径 所以在mana ...

  8. MySQL表查询

    单表查询 表准备 create table emp( id int not null unique auto_increment, name ) not null, sex enum('male',' ...

  9. python-django项目基础-haystack&whoosh&jieba_20191124

    全文检索框架和搜索引擎的安装和配置: 安装全文检索框架,pip install django-haystack, 安装搜索引擎,pip install whoosh settings里面配置 1,注册 ...

  10. cs231n spring 2017 lecture13 Generative Models

    1. 非监督学习 监督学习有数据有标签,目的是学习数据和标签之间的映射关系.而无监督学习只有数据,没有标签,目的是学习数据额隐藏结构. 2. 生成模型(Generative Models) 已知训练数 ...