加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

IO流-文本IO\读写二进制数据

发布时间:2020-12-15 07:16:19 所属栏目:Java 来源:网络整理
导读:文本IO 一、简述 OutputStreamWriter类使用选定的编码方式吧Unicode字符流转换为字节流,InputStreamReader类将包含字节的输入流转为可以产生Unicode字符的读入器。 例: (1)InputStreamReader in = new InputStreamReader(System.in)让一个输入读入器可以从

文本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()返回文件按照字节来度量的长度。

?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读