zoukankan      html  css  js  c++  java
  • IO流-文本IO读写二进制数据

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

  • 相关阅读:
    Two Sum II
    Subarray Sum
    Intersection of Two Arrays
    Reorder List
    Convert Sorted List to Binary Search Tree
    Remove Duplicates from Sorted List II
    Partition List
    Linked List Cycle II
    Sort List
    struts2结果跳转和参数获取
  • 原文地址:https://www.cnblogs.com/orlion/p/4826841.html
Copyright © 2011-2022 走看看