文本IO

一、简述

OutputStreamWriter类使用选定的编码方式吧Unicode字符流转换为字节流,InputStreamReader类将包含字节的输入流转为可以产生Unicode字符的读入器。

例:

(1)InputStreamReader in = new InputStreamReader(System.in)让一个输入读入器可以从控制台读入输入并转换为Unicode

(2)InputStreamReader in = new InputStreamReader(new FileInputStream(“test.txt”),  “ISO08859_5”);例(1)输入流读入器会使用主机系统默认字符编码格式,而此例显示了通过控制器指定编码格式

(3)FileWriter out = new FileWriter(“test.txt”);文件写出器

二、

1、写出文本输出

PrintWriter:这个类有以文本格式打印字符串和数字的方法

PrintWriter out = new PrintWriter(“test.txt”);等同于:… = new PrintWriter(new FileWriter(“test.txt”));

String name = “test”;

double var = 10000;

out.print(name);

out.println(var);

上例会将test 10000写出到写出器out,之后这些字符将会被转换成字节并最终写入到test.txt中

可以通过构造方法PrintWriter(Writer out , Boolean autoFlush)来设置是否自动清空缓冲区,当autoFlush设为true时只要调用println就会清空缓冲区。例:

PrintWriter out = new PrintWriter(new FIleWriter(“test.txt”) , true);

API:java.io.PrintWriter

(1)PrintWriter(Writer out)

(2)PrintWriter(Writer out , Boolean autoFlush)

创建一个新的PrintWriter

参数: out: 一个用于字符输出的写出器

autoFlush:是否自动清空

(3)PrintWriter(OutputStream out)

(4)PrintWriter(OutputStream out, boolean autoflush)

通过创建必需的中介OutputStreamWriter,从已有的OutputStream中创建一个新的PrintWriter。

(5)PrintWriter(String filename)

(6)PrintWriter(File file)

通过创建必需的中介FileWriter,创建一个向给定的文件写出的新的PrintWriter。

(7)       void printf(String format, Object... args) 按照格式字符串指定的方式打印给定的值

(8)boolean checkError()如果产生格式化或输出错误,则返回true。一旦这个流碰到了错误,它就受到了感染,并且所有对checkError的调用都将返回true。

2、读入文本输入

可以用Scanner。1.5之前处理文本唯一方式是使用BufferedReader,该类有方法readLine可以读入一行文本,在没有输入时返回null,例:

BufferedReader in = new BufferedReader(new FileReader(“test.txt”));

String line;

While((line = in.readLine()) != null){

Pass..

}

注:BufferedReader没有用于读入数字的方法

读写二进制数据

一、

1、DataInputStream实现了DataInput接口,要想从文件中读入二进制数据需要将DataInputStream与字节源相结合例如FileInputStream:

DataInputStream in = new DataInputStream(new FileInputStream(“test.txt”));

DataOutputStream:

DataOutputStream = new DataOutputStream(new FileOutputStream(“test.txt”));

2、API:
         DataInput:

readBoolean()、readByte()、readChar()、readDouble()、readFloat()、readInt()、…….

(1)    
void readFully(byte[] b) 将字节读入到数组b中,其间阻塞直至所有字节都读入。

(2)    
void readFully(byte[] b, int
off, int len) 将字节读入到数组b中,其间阻塞直至所有字节都读入。

参数:b 数据读入的缓冲区

off 数据起始位置的偏移量

len 读入字节的最大数量

(3)String readUTF():读入由“修订过的UTF-8”格式的字符构成的字符串。

DataOutput:

Void writeDouble(double d )……

(1)void writeChars(String s):
写出字符串中的所有字符。

(2)void writeUTF(String s): 写出由“修订过的UTF-8”格式的字符构成的字符串。

3、:

随机访问文件:

RandomAccessFile类可以在文件中任意位置查找或写入数据,可以打开一个随机访问文件,只用于读入或者同时用于读写

RandomAccessFile in = new
RandomAccessFile(“test.txt” , “r”);

RandomAccessFile inOut =
new RandomAccessFile(“test.txt” , “rw”); 当将已有文件打开成RandomAccessFile时,这个文件并不会被删除

API:java.io.RandomAccessFile

(1)RandomAccessFile(String
file,String mode)

RandomAccessFile(File
file , String mode)

参数:file 要打开的文件

mode “r”表示只读模式; “rw”表示读/写模式; “rws”表示每次更新时,都对数据和元数据的写磁盘操作进行同步的读/写模式;
“rwd”表示每次更新时,只对数据的写磁盘操作进行同步的读/写模式

(2)long getFilePointer():返回文件指针的当前位置

(3)void seek(long pos): 将文件指针从文件的开始设置到pos个字节处。

(4)long length()返回文件按照字节来度量的长度。

IO流-文本IO\读写二进制数据的更多相关文章

  1. 背水一战 Windows 10 (89) - 文件系统: 读写文本数据, 读写二进制数据, 读写流数据

    [源码下载] 背水一战 Windows 10 (89) - 文件系统: 读写文本数据, 读写二进制数据, 读写流数据 作者:webabcd 介绍背水一战 Windows 10 之 文件系统 读写文本数 ...

  2. 重新想象 Windows 8 Store Apps (23) - 文件系统: 文本的读写, 二进制的读写, 流的读写, 最近访问列表和未来访问列表

    原文:重新想象 Windows 8 Store Apps (23) - 文件系统: 文本的读写, 二进制的读写, 流的读写, 最近访问列表和未来访问列表 [源码下载] 重新想象 Windows 8 S ...

  3. Java读写二进制数据

    import java.io.*; import java.time.LocalDate; public class Test { public static void main(String[] a ...

  4. 零基础学习java------day16-----文件,递归,IO流(字节流读写数据)

    1.File 1.1 构造方法(只是创建已经存在文件的对象,并不能创建没有的文件) (1)public File(String pathname) (2)public File(String pare ...

  5. java IO流文件的读写具体实例(转载)

    引言: 关于java IO流的操作是非常常见的,基本上每个项目都会用到,每次遇到都是去网上找一找就行了,屡试不爽.上次突然一个同事问了我java文件的读取,我一下子就懵了第一反应就是去网上找,虽然也能 ...

  6. java IO流文件的读写具体实例

    IO流的分类:1.根据流的数据对象来分:高端流:所有的内存中的流都是高端流,比如:InputStreamReader  低端流:所有的外界设备中的流都是低端流,比如InputStream,Output ...

  7. C# IO流与文件读写学习笔记

    本笔记摘抄自:https://www.cnblogs.com/liyangLife/p/4797583.html,记录一下学习过程以备后续查用. 一.文件系统 1.1文件系统类的介绍 文件操作类大都在 ...

  8. java io流 创建文件、写入数据、设置输出位置

    java io流 创建文件 写入数据 改变system.out.print的输出位置 //创建文件 //写入数据 //改变system.out.print的输出位置 import java.io.*; ...

  9. 使用IO流创建文件并写入数据

    /* 字符流和字节流: 字节流两个基类: InputStream OutputStream 字符流两个基类: Reader Writer 既然IO流是用于操作数据的, 那么数据的最常见体现形式是:文件 ...

随机推荐

  1. jQqery EasyUI dategrid行中多列数据的可编辑操作

    最近的项目中需要在前台dategrid列表中直接修改某些列的数据,并且修改后的数据需要不通过后台而自动更新在列表中. 带着这一问题开始寻找实现的思路,首先想到的就是去jQqery EasyUI官网找例 ...

  2. springmvc No mapping found for HTTP request with URI in Dispatc

    springmvc No mapping found for HTTP request with URI in Dispatc 博客分类: Java Web springmvcspring MVCNo ...

  3. NSIS(001)检测和结束进程是否运行?

    配合插件:killer.dll 导入DLL:ReserveFile "${NSISDIR}\Plugins\killer.dll" 使用方法: ;可以检测和结束32位程序进程和64 ...

  4. 【C-顺序程序结构】

    一.C语句 可分为以下五类: ① 表达式语句 表达式: ②.函数调用语句 函数名(实际参数表); ③.控制语句 条件判断语句:if语句.switch语句: 循环执行语句:do while语句.whil ...

  5. libnode 0.4.0 发布,C++ 语言版的 Node.js

    libnode 0.4.0 支持 Windows ,提升了性能,libuv 更新到 0.10.17 版本,libj 更新到 0.8.2 版本. libnode 是 C++ 语言版的 Node.js,和 ...

  6. HTTP基本认证

    众所周知,Web使人们可以很方便的访问分布在世界各个角落里信息.但是仅仅是方便还是不够的,并不是所有的信息都适合在互联网上公开访问,我们需要保证只有特定的人才能看到我们的敏感信息并且执行特定的操作. ...

  7. 在Nifi 里 把 HDFS Json 为csv 格式

    import org.apache.commons.io.IOUtilsimport java.nio.charset.*import java.text.SimpleDateFormatimport ...

  8. AlwaysOn 部分笔记及文档连接

    本文主要含有一些AlwaysOn 配置方法及连接. 本想展开详细写一下  无奈隔壁在年会排练节目,那歌唱得我只想赶紧回家!!!!!!!!!!!!!!! http://www.cnblogs.com/d ...

  9. 【转】 Nginx深入详解之多进程网络模型

    [转自]http://blog.chinaunix.net/uid-22312037-id-3974068.html 一.进程模型        Nginx之所以为广大码农喜爱,除了其高性能外,还有其 ...

  10. NoSQL:从关系型数据库到非关系型数据库

    关系型数据库 所谓关系型数据库,,就是指采用了关系模型来组织数据的数据库. 什么是关系模型,简单说,关系模型就是二维表格模型,而一个关系型数据库就是由二维表及其之间的联系所组成的一个数据组织. 关系模 ...