二进制I/O
1 import java.io.BufferedInputStream;
2 import java.io.BufferedOutputStream;
3 import java.io.DataInputStream;
4 import java.io.DataOutputStream;
5 import java.io.FileInputStream;
6 import java.io.FileOutputStream;
7 import java.io.IOException;
8 import java.io.PrintWriter;
9
10 public class TextCode {
11 public static void main(String[] args) throws IOException {
12
13 DataOutputStream output = new DataOutputStream(
14 new BufferedOutputStream(new FileOutputStream("data.dat")));
15 output.writeChar('a');
16 output.writeInt(5);//int型32位
17 output.writeInt(16);/*十六进制显示:00 61 00 00 00 05 00 00 00 10*/
18 output.flush();//当缓冲区填满或当流被清空时,数据就被写出。
19 DataInputStream input = new DataInputStream(
20 new BufferedInputStream(new FileInputStream("data.dat")));
21 System.out.println(input.readChar());
22 System.out.println(input.readInt());
23 System.out.println(input.readInt());
24 output.close();
25 input.close();
26 PrintWriter out = new PrintWriter("text.txt");
27 out.println("你好");
28 out.println("Hello");
29 out.print(10);/*十六进制显示:
30 C4 E3 BA C3 0D OA 48 65 6C 6C 6F 0D 0A 31 30*/
31 out.close();//如果没有调用该方法,数据就不能正确地保存在文件中
32 }
33 }
FileInputStream和FileOutputStream类:是为了从/向文件读取/写入字节。
FilterInputStream类和FilterOutputStream类:过滤器数据流。
DataInputStream类(从数据流读取字节,并且把它们转换为正确的基本类型或字符串)和DataOutputStream类(将基本类型的值或字符串转换成字节,并且将字节输出到数据流)
- +readByte():byte +writeByte(v: int):void
- +readDouble():double +writeDouble(v: double):void
- +writeChar(c: char): void 向输出流写入一个字符(由两个字节组成)
- +writeChars(s: String): void
BufferedInputStream类和BufferedOutputStream类为存储字节在流中添加一个缓冲区,以提高处理效率。
- BufferedInputStream(int: InputStream)
- BufferedOutputStream(filename:String, bufferSize: int)
ObjectInputStream类和ObjectOutputStream类:对象的输入输出。
- ObjectInputStream(in: InputStream)
- ObjectOutputStream(out: OutputStream)
1 import java.io.BufferedInputStream;
2 import java.io.BufferedReader;
3 import java.io.DataInputStream;
4 import java.io.File;
5 import java.io.FileInputStream;
6 import java.io.FileNotFoundException;
7 import java.io.FileReader;
8 import java.io.IOException;
9 import java.io.InputStreamReader;
10 import java.util.Scanner;
11
12
13 public class Test {
14 public static void main(String[] args) throws IOException {
15 BufferedReader in;
16 try {
17 //FileReader会抛出异常
18 in = new BufferedReader(new FileReader("text.txt"));
19 System.out.println(in.readLine());
20 in.close();
21 } catch (IOException e) {
22 }
23 try {
24 Scanner input = new Scanner(new File("text.txt"));
25 System.out.println(input.nextLine());
26 input.close();
27 } catch (FileNotFoundException e) {
28 }
29 /*BufferedReader从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取。*/
30 /*InputStreamReader类将包含字节(用某种字符编码方式表示的字符)的输入流转换为可以产生Unicode字符的读入器*/
31 BufferedReader inp = new BufferedReader(new InputStreamReader(System.in));//字符的读取
32 Scanner input1 = new Scanner(System.in);//从键盘输入
33 try{
34 FileInputStream fileInput = new FileInputStream("text.txt");//只能读入字节和字节数组
35 /*默认不使用缓冲区*/
36 DataInputStream din = new DataInputStream(fileInput);//可以读取数据类型Byte,Int,Char,Double...
37 /*嵌套过滤器来添加多重功能*/
38 DataInputStream dInput = new DataInputStream(
39 new BufferedInputStream(new FileInputStream("text1.txt")));
40 System.out.println(dInput.readChar());
41
42 }
43 catch(FileNotFoundException e){
44 }
45 try {
46 FileReader fileReader = new FileReader("tetx.txt");
47 } catch (Exception e) {
48 }
49 }
50
51 }
二进制I/O的更多相关文章
- 使用struct处理二进制
有的时候需要用python处理二进制数据,比如,存取文件.socket操作时.这时候,可以使用python的struct模块来完成. struct模块中最重要的三个函数是pack(), unpack( ...
- 如何开启MySQL 5.7.12 的二进制日志
1. 打开/etc下的my.cnf文件 2. 编辑它,添加内容: log_bin=binary-log #二进制日志的文件名 server_id=1 #必须指定server_id,这是MySQL ...
- 【.net 深呼吸】使用二进制格式来压缩XML文档
在相当多的情况下,咱们写入XML文件默认是使用文本格式来写入的,如果XML内容是通过网络传输,或者希望节省空间,特别是对于XML文档较大的情况,是得考虑尽可能地压缩XML文件的大小. XmlDicti ...
- Javascript的二进制数据处理学习 ——nodejs环境和浏览器环境分别分析
以前用JavaScript主要是处理常规的数字.字符串.数组对象等数据,基本没有试过用JavaScript处理二进制数据块,最近的项目中涉及到这方面的东西,就花一段时间学了下这方面的API,在此总结一 ...
- 浅析MySQL基于ROW格式的二进制日志
上文分析的二进制日志实际上是基于STATEMENT格式的,下面我们来看看基于ROW格式的二进制日志,毕竟,两者对应的binlog事件类型也不一样,同时,很多童鞋反映基于ROW格式的二进制日志无法查到原 ...
- 浅析MySQL二进制日志
查看MySQL二进制文件中的内容有两种方式 1. mysqlbinlog 2. SHOW BINLOG EVENTS [IN 'log_name'] [FROM pos] [LIMIT [offs ...
- asp.net将图片转成二进制存入数据库
一.代码如下 int code = int.Parse(this.TextBox1.Text);//图片编码 string value = this.FileUpload1.PostedFile.Fi ...
- 二进制包安装MySQL数据库
1.1二进制包安装MySQL数据库 1.1.1 安装前准备(规范) [root@Mysql_server ~]# mkdir -p /home/zhurui/tools ##创建指定工具包存放路径 [ ...
- sqlite3的图片的(二进制数据)存取操作
sqlite3的图片的(二进制数据)存取操作 前言 上篇介绍了sqlite3的一些常用插入操作方法和注意事项,在实际项目中遇到了图片缓存的问题,由于服务器不是很稳定,且受到外界环境的干扰(例如断电 ...
- MySQL二进制日志
一.二进制日志(The Binary Log) 1.简介 包含所有更新了的数据或者已经潜在更新了的数据(比如一条没有匹配任何行的delete语句) 包含所有更新语句执行时间的信息 不记录没有修改数据的 ...
随机推荐
- [源码解析] 深度学习分布式训练框架 horovod (19) --- kubeflow MPI-operator
[源码解析] 深度学习分布式训练框架 horovod (19) --- kubeflow MPI-operator 目录 [源码解析] 深度学习分布式训练框架 horovod (19) --- kub ...
- 分享一个自己画div的技巧
分享一个自己画div的技巧 笔者是小白,前端不是很懂.现在想总结下自己画div布局的小技巧和思路. 先对着设计图把div给好好框选出来 我个人觉得这一步是很重要的,要先分析大局,再细节处理.一定要先决 ...
- P2490 [SDOI2011]黑白棋
P2490 [SDOI2011]黑白棋 题意 一个 \(1*n\) 的棋盘上,A 可以移动白色棋子,B 可以移动黑色的棋子,其中白色不能往左,黑色不能往右.他们每次操作可以移动 1 到 \(d\) 个 ...
- python中浮点数比较判断!为什么不能用==
问题:浮点数比较为什么不能用==来写? 答:计算机里面的数字是由二进制保存的,在计算机内部有些数字不能准确的保存,于是就保存了一个最靠近的数字. 计算机表示浮点数(float或double类型)都有一 ...
- Nginx负载均衡反向代理服务器
1.第一步先在IIS中创建多个网站,分别用不同的端口号.这里创建两个网站端口号分别8084.8085,在Nginx配置中会用到.测试两个网站能正常访问. 2.配置Nginx 1)增加负载均衡请求列表 ...
- Python - 浅拷贝的四种实现方式
浅拷贝详解 https://www.cnblogs.com/poloyy/p/15084277.html 方式一:使用切片 [:] 列表 # 浅拷贝 [:] old_list = [1, 2, [3, ...
- MySQL 到底是如何做到多版本并发的?
之前的文章简单的介绍了 MySQL 的事务隔离级别,它们分别是:读未提交.读已提交.可重复读.串行化.这篇文章我们就来探索一下 MySQL 事务隔离级别的底层原理. 本篇文章针对 InnoDB 存储引 ...
- 共享内存 & Actor并发模型哪个更快?
HI,前几天被.NET圈纪检委@懒得勤快问到共享内存和Actor并发模型哪个速度更快. 前文传送门: 说实在,我内心10w头羊驼跑过...... 先说结论 首先两者对于并发的风格模型不一样. 共享内存 ...
- CF559B Equivalent Strings TJ
前言 题目传送门 正解:模拟,递归. 考试的 T4,还是想复杂了 qwq. 这题不要用 STL,容易 \(\texttt{TLE}\)!! 题意简述 翻译够简了. 对了给一下样例解释的翻译: 第一个样 ...
- 干了8年Android开发熬到年薪40万,突然接到被辞退消息,应该怎么办?
01 36岁Android开发,为公司工作8年,昨天HR说公司不准备续约 前天晚上,有个读者给我留言,讲述了他自己比较气愤的一件事,感觉自己委屈又不值. 这位朋友不愿意透露姓名,就叫他H先生吧. H先 ...