Java基础:浅谈数据输入流/数据输出流《DataInputstream类与DataOutputstream类》
一、理论概述
数据输入/输出流(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类》的更多相关文章
- 【推荐】JAVA基础◆浅谈3DES加密解密
国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私 ...
- Java基础 FileInputStream/ FileOutputStream / 字节输入流 字节输出流实现文件的复制
FileInputStream/FileOutputStream的笔记: /**(FileInputStream/FileOutputStream四个步骤: ①声明②加载地址③read/write④c ...
- JAVA基础细谈
JAVA基础细谈 一. 源文件和编译后的类文件 源文件的本质就是程序文件,是程序员编写,是人看的.而编译后的类文件是给电脑看的文件.一个类就是一个文件,无论这个类写在哪里,编译以后都是一个文件 ...
- 浅谈SQL Server数据内部表现形式
在上篇文章 浅谈SQL Server内部运行机制 中,与大家分享了SQL Server内部运行机制,通过上次的分享,相信大家已经能解决如下几个问题: 1.SQL Server 体系结构由哪几部分组成? ...
- C#核心基础--浅谈类和对象的概念
浅谈类和对象的概念 一.什么是类?什么是对象? 学习一门面向对象编程语言,我们必须得知道什么是类?什么是对象? 类(Class)实际上是对某种类型的对象定义变量和方法的原型.它表示对现实生活中一类具有 ...
- 牛客网Java刷题知识点之输入流、输出流、字节流、字符流、字节流的抽象基类(InputStream、OutputStream)、字符流的抽象基类(Reader、Writer)、FileWriter、FileReader
不多说,直接上干货! IO流用来处理设备之间的数据传输. java对数据的操作是通过流的方式. java用于操作流的对象都在IO包中. IO流按操作数据分为两种:字节流和字符流. IO流按流向分为:输 ...
- Java的IO流以及输入流与输出流的异同
一:流的基本概念: Java中I/O操作主要是指使用Java进行输入,输出操作. Java所有的I/O机制都是基于数据流进行输入输出,这些数据流表示了字符或者字节数据的流动序列.J ...
- java多线程浅谈
当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法? 分这几种情况: 1.其他方法前是否加了synchronized关键字,如果没加,则能. 2 ...
- android的Binder通信机制java层浅谈-android学习之旅(88)
1.Service Manager的Java代理对象 在Java层中,Service Manager的代理对象类型为ServiceManagerProxy.它继承并且实现了IServiceManage ...
随机推荐
- ZJNU 1153 - 找单词——中级
状态转移b[i]记录价值为i的单词种类数d[j+k*i]+=b[j] , k<=a[i]&&j+k*i<=50表示价值为j+k*i的单词可以由价值为j的单词加上k个i字母转 ...
- Matlab高级教程_第二篇:Matlab相见恨晚的模块_02_全局变量的妙用_遍历穿透
1 比如我这边写了一个函数,这个函数中有一个变量作为参数,给定这个参数一个值,然后这个函数返回给我一个值.但是,我写这函数的时候,这个传参我不写到函数里面.可以通过全局变量的方式进行在外部穿透遍历. ...
- iOS补位动画、沙漏效果、移动UITableViewCell、模拟贪吃蛇、拖拽进度等源码
iOS精选源码 JHAlertView - 一款黑白配色的HUD之沙漏效果 继承UIButton的自定义按钮SPButton 用递归算法实现iOS补位动画 iOS 长按移动UITableViewCel ...
- 三十、sersync高级同步工具实时数据同步架构
一.项目介绍 Sersync项目利用inotity与rsync技术实现对服务器数据实时同步的解决方案,其中inotity用于监控sersync所在服务器上的文件变化. Sersync项目的优点: 1. ...
- 记一次线上“no such file or directory”问题处理
事件背景描述:项目是基于docker部署,在使用xxl-job的过程中,需要使用XxlJobLogger.log记录日志(非必须),项目定义日志其日志存储位置/home/logs.任务运行后包找不到文 ...
- 关于guava实现线程池
private ListeningExecutorService executorService = MoreExecutors.listeningDecorator(Executors.newCac ...
- 04-Java 对象和类
Java作为一种面向对象语言.支持以下基本概念: 多态 继承 封装 抽象 类 对象 实例 方法 重载 本节我们重点研究对象和类的概念. 对象:对象是类的一个实例(对象不是找个女朋友),有状态和行为.例 ...
- [LC] 557. Reverse Words in a String III
Given a string, you need to reverse the order of characters in each word within a sentence while sti ...
- [LC] 15. 3Sum
Given an array nums of n integers, are there elements a, b, c in nums such that a + b + c = 0? Find ...
- cs231n spring 2017 lecture9 CNN Architectures
参考<deeplearning.ai 卷积神经网络 Week 2 听课笔记>. 1. AlexNet(Krizhevsky et al. 2012),8层网络. 学会计算每一层的输出的sh ...