zoukankan      html  css  js  c++  java
  • XXXWriter与XXXReader

    FileOutputStream FileInputStream FileWriter FileReader

    是输入输出流对文件的接口,stream是对字节(byte[])的操作,writer是对字符(string)的操作。

    OutputStreamWriter InputStreamReader

    构造函数参数为OutputStream和InputStream,也就是说用于把字节转为字符(byte[] to String)

    DataOutputStream dout= new DataOutputStream(new FileOutputStream(file));
    dout.writeInt(1);
    OutputStreamWriter osw = new OutputStreamWriter(dout);
    PrintWriter pw= new PrintWriter(osw);

    PrintWriter 和 BufferedWriter

    PrintWriter和BufferedWriter都是继承java.io.Writer,所以很多功能都一样。不过PrintWriter提供println()方法可以写不同平台的换行符,而BufferedWriter可以任意设定缓冲大小。

    PrintWriter有含有OutputStream、File、Writer的构造方法。BufferedWriter只接受writer。

    默认是清空文件

    PrintWriter pwriter = new PrintWriter(new File("f:/test.txt"););

    BufferedWriter bwriter = new BufferedWriter(pwriter);

    如果需要不清空文件

    PrintWriter pwriter = new PrintWriter(new FileWriter(new File("f:/test.txt"),true));

    BufferedWriter bwriter = new BufferedWriter(new FileWriter(new File("f:/test.txt"),true));

    PrintWriter提供方法为各个平台换行,println()

    BufferedWriter的换行则为newLine()

    基本上这两个类都差不多,用哪个都可以,PrintWriter稍好

    ByteArrayOutputStream

    将各种对象写入内存缓冲区,然后写入文件,

    ByteArrayOutputStream array = new ByteArrayOutputStream();
    int a = 1;
    array.write(a);
    byte[] bts = array.toByteArray();

    array.writeTo(new FileOutputStream(bfile, true));//通过outputstream写入文件

    DataOutputStream

    可以写各种基本类型,可以用它来封一层ByteArrayOutputStream来写各种基本类型,也可以直接向各种outputstream中写,例如文件

    ByteArrayOutputStream array = new ByteArrayOutputStream();
    DataOutputStream out = new DataOutputStream(array);//向array中输出
    out.writeBytes("sasdfsafsdf");
    out.writeChar('A');
    out.writeInt(123);
    DataOutputStream to = new DataOutputStream(new FileOutputStream(bfile, true));//向文件中输出
    array.writeTo(to);

    //直接向文件中写

    DataOutputStream ssss = new DataOutputStream(new FileOutputStream(bfile));
    ssss.writeInt(1);

    ObjectOutputStream

    写入对象 

    Reader与Writer差不多

    主要用FileInputStream,BufferedReader, BufferedInputStream, GZIPInputStream

    BufferedReader reader = new BufferedReader(freader);
    String line = null;
    while ((line = reader.readLine()) != null)
    {
          System.out.println(line);
    }
    reader.close();

    //直接读进byte[]

    byte[] data = new byte[(int)bfile.length()];
    fis.read(data);
    fis.close();
               
    //从二进制文件读出,然后转成reader。           
    FileInputStream fileInputStream   = new FileInputStream(bfile);
    //GZIPInputStream gzipInputStream = new GZIPInputStream(fileInputStream);
    //InputStreamReader inputStreamReader = new InputStreamReader(gzipInputStream);
    InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream);
    BufferedReader bfreader = new BufferedReader(inputStreamReader);

    读写

    BufferedReader reader = new BufferedReader(new FileReader(file));
    PrintWriter pw = new PrintWriter(new File("f:/writerTest.txt"));
    String line = null;
    while ((line = reader.readLine()) != null)
    {
           System.out.println(line);
           pw.println(line);
    }
    reader.close();
    pw.close();

    //字节读写

    BufferedInputStream in = new BufferedInputStream(new FileInputStream(bfile));
    ByteArrayOutputStream array = new ByteArrayOutputStream();
    DataOutputStream dos = new DataOutputStream(new FileOutputStream("f:/bwriterTest.txt"));
    byte[] buffer = new byte[4096];
    int numBytesRead;
    while ((numBytesRead = in.read(buffer, 0, 4096)) != -1)
    {
          array.write(buffer, 0 ,numBytesRead);

          //dos.write(buffer, 0 ,numBytesRead);
    }
    array.writeTo(dos);
    dos.close();
    in.close();
    array.close();

  • 相关阅读:
    linux命令---常用stty的命令
    Linux命令--- /dev/null和/dev/tty
    linux---正则表达式
    linux命令---shell脚本调试
    linux命令---wc
    linux命令---head与tail
    javascrit2.0完全参考手册(第二版) 第1章第2节:javascript的历史和使用
    javascrit2.0完全参考手册(第二版) 第1章第1节 在XHTML文档中增加javascript
    (JavaScript 2.0: The Complete Reference, Second Edition)javascript 2.0完全手册第二版 翻译说明
    采用EntityFramework.Extended 对EF进行扩展
  • 原文地址:https://www.cnblogs.com/qingblog/p/2549084.html
Copyright © 2011-2022 走看看