zoukankan      html  css  js  c++  java
  • 【I/O】常见输入输出

    缓冲输入文件、输出文件

    import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.FileReader;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.io.PrintWriter;
    
    public class Test {
        public static void main(String[] args) throws IOException{
            BufferedReader input = new BufferedReader(new FileReader("D:/test.txt"));
            PrintWriter output=new PrintWriter(new BufferedWriter(new FileWriter("D:/test_copy.txt")));
            String s;
            while((s=input.readLine())!=null){
                output.print(s);   //readLine()取出文件的一行内容时,是将换行符是删除了的。
            }
            input.close();
            output.close();  //缓冲区可能仍有内容,不要忘记正确的关闭它。
        }
    }

    从内存中读入(将一个string通过StringReader读入)

    import java.io.IOException;
    import java.io.StringReader;
    
    public class Test {
        public static void main(String[] args) throws IOException{
            StringReader input = new StringReader("这是一个字符串"); 
            int c;
            while((c=input.read())!=-1){
                System.out.println((char)c);  //read()返回的一个int形式,必须类型转换为char才能正确打印。
            }
            input.close();
        }
    }

    格式化的内存输入,此时需要用到面向字节的I/O类(InputStream)

    import java.io.ByteArrayInputStream;
    import java.io.DataInputStream;
    import java.io.IOException;
    
    public class Test {
        public static void main(String[] args) throws IOException{
            DataInputStream input = new DataInputStream(new ByteArrayInputStream("This".getBytes()));
            while(input.available()!=0){    //判断是否还有剩余的字节。(由于是一个个字节读取,故所有字节都是合法的结果,因此返回值不能用来检测输入是否结束,我们只能使用available判断是否读取完毕。
                System.out.println((char)input.readByte());  //readBytes一次次读入一个字节。还有类似的readChar/readFloat/readDouble/readInt等
            }
        }
    }

    使用DataInputStream来存储和恢复数据

    DataInputStream/DataOutputStream可以确保我们读取数据一致(无论平台有多么不同)。这一点是非常重要的。缺点就是我们必须知道流中数据项所在的确切位置。

    import java.io.BufferedInputStream;
    import java.io.BufferedOutputStream;
    import java.io.DataInputStream;
    import java.io.DataOutputStream;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    
    public class Test {
        public static void main(String[] args) throws IOException{
            DataOutputStream output=new DataOutputStream(new BufferedOutputStream(new FileOutputStream("test.txt")));
            output.writeDouble(3.1415926535);
            output.writeUTF("使用UTF编码");
            output.writeInt(123);
            output.close();
            
            DataInputStream input=new DataInputStream(new BufferedInputStream(new FileInputStream("test.txt")));
            System.out.println(input.readDouble());
            System.out.println(input.readUTF());
            System.out.println(input.readInt());
            input.close();
        }
    }

    读写随机访问文件

  • 相关阅读:
    uboot的启动过程-FDT
    pat练习
    也不知道 为什么没通过 -------------存疑 ---延后解决
    刚认识--博客园
    MapReduce报错Exception in thread "main" java.lang.UnsatisfiedLinkError: org.apache.hadoop.io.nativeio
    Hadoop 学习笔记(十)HDFS 之 集群安全模式 & DateaNode
    Hadoop 学习笔记(九)HDFS 之 NameNode & SecondaryNameNode
    sqlldr 报错:Field in data file exceeds maximum length 解决方法
    Hadoop 学习笔记(八)HDFS 数据的读写
    Hadoop 学习笔记(七)HDFS 客户端操作(下)
  • 原文地址:https://www.cnblogs.com/zadomn0920/p/6347739.html
Copyright © 2011-2022 走看看