zoukankan      html  css  js  c++  java
  • Java基础——I/O续

    二进制I/O类

        FileInputStream类和FileOutputStream类
          *FileOutputStream(file: File)
          *FileOutputStream(filename: String)
          *FileOutputStream(file: File, append: boolean)
          *FileOutputStream(filename: String, append: boolean)
          如果文件不存在,则会创建一个新文件。
          如果这个文件已经存在,前两个构造方法将会删除文件的当前内容。
          若要在已存在的文件上进行修改,则将最后两个构造方法中的参数append设置为true

     1 public class TestFileStream {
     2     public static void main(String[] args) throws java.io.IOException{
     3         java.io.OutputStream output = new java.io.FileOutputStream("temp.dat");
     4         
     5         for(int i = 97; i <= 122; i++)
     6             output.write(i);
     7         output.close();
     8         
     9         java.io.InputStream input = new java.io.FileInputStream("temp.dat");
    10         
    11         int value;
    12         //从input.read()中读取一个字节,然后将它赋值给value,并且检验它是否为-1。输入值为-1意味着文件的结束。
    13         while((value = input.read()) != -1)
    14             System.out.println(value);
    15 
    16         //不关闭流可能会在输出文件中造成数据受损,或导致其他的程序设计错误。
    17         input.close();
    18     }
    19 }
    TestFileStream.java

        DataInputStream类和DataOutputStream类
          DataInputStream从数据流读取字节,并且将它们转换为正确的基本类型值或字符串值。
          DataOutputStream将基本类型的值或字符串转换为字节,并且将字节输出到数据流。

     1 import java.io.RandomAccessFile;
     2 
     3 public class TestDataStream {
     4     public static void main(String[] args) throws java.io.FileNotFoundException,java.io.IOException{
     5         java.io.DataOutputStream dos = new java.io.DataOutputStream(new java.io.FileOutputStream("temp.dat"));
     6         dos.writeUTF("BinZheng");
     7         dos.writeDouble(95.5);
     8         dos.close();
     9         
    10         java.io.DataInputStream dis = new java.io.DataInputStream(new java.io.FileInputStream("temp.dat"));
    11         System.out.println("姓名:"+dis.readUTF()+"-"+"分数:"+dis.readDouble());
    12         dis.close();
    13         
    14         RandomAccessFile raf = new RandomAccessFile("1234.txt", "rw");
    15         raf.write(51);
    16         raf.close();
    17     }
    18 }
    TestDataStream.java

        BufferedInputStream类和BufferedOutputStream类
          可以通过减少读写次数来提高输入和输出的速度。
          其为存储字节在流中添加一个缓冲区,以提高处理效率。
          如果没有指定缓冲区大小,默认的大小是521个字节。缓冲区输入流会在每次读取调用中尽可能多地将数据读入缓冲区。相反地,只有当缓冲区已满或调用flsh()方法时,缓冲输出流才会调用写入方法。

        对象的输入/输出
          ObjectInputStream类和ObjectOutputStream类除了可以实现基本数据类型与字符串的输入和输出之外,还可以实现对象的输入和输出。所以完全可以用ObjectInputStream类和ObjectOutputStream类代替DataInputStream类和DataInputStream类。

     1 public class TestObjectOutputStream {
     2     public static void main(String[] args) throws java.io.IOException,ClassNotFoundException{
     3         java.io.ObjectOutputStream output = new java.io.ObjectOutputStream(new java.io.FileOutputStream("object.dat"));
     4         //若要提高程序的性能,可以使用下面的语句代替上一行
     5         //java.io.ObjectOutputStream output1 = new java.io.ObjectOutputStream(new java.io.BufferedOutputStream(new java.io.FileOutputStream("object.dat")));
     6         output.writeUTF("BinZheng");
     7         output.writeDouble(95.5);
     8         output.writeObject(new java.util.Date());
     9         output.close();
    10         
    11         java.io.ObjectInputStream input = new java.io.ObjectInputStream(new java.io.FileInputStream("object.dat"));
    12         System.out.println(input.readUTF()+" - "+
    13         input.readDouble()+" - "+
    14         input.readObject());
    15         input.close();
    16     }
    17 }
    TestObjectOutputStream.java

        序列化数组
          只有数组中的元素都是可序列化的,这个数组才是可序列化的。

     1 public class TestObjectStreamForArray {
     2     public static void main(String[] args) throws java.io.FileNotFoundException, java.io.IOException, ClassNotFoundException {
     3         int[] numbers = {1,2,3,4,5};
     4         String[] strings = {"zhengbin","zhengjia","cuimin"};
     5         //若不存在这个文件,则会创建一个新文件。
     6         java.io.ObjectOutputStream oos = new java.io.ObjectOutputStream(new java.io.FileOutputStream("array.dat",true));
     7         oos.writeObject(numbers);
     8         oos.writeObject(strings);
     9         oos.close();
    10         
    11         java.io.ObjectInputStream ois = new java.io.ObjectInputStream(new java.io.FileInputStream("array.dat"));
    12         int[] numbers1 = (int[])(ois.readObject());
    13         String[] strings1 = (String[])(ois.readObject());
    14         ois.close();
    15         
    16         for(int i = 0;i < numbers1.length;i++){
    17             System.out.print(numbers1[i]);
    18         }
    19         System.out.println();
    20         for(int i = 0;i < strings1.length;i++){
    21             System.out.print(strings1[i]);
    22         }
    23     }
    24 }
    TestObjectStreamForArray.java

        随机访问文件
          之前所用的所有数据流都是只读的或只写的。这些数据流的外部文件都是顺序文件,如果不创建新文件就不能更新它们。
          RandomAccessFile类实现了DataInput和DataOutput接口。
          当创建一个RandomAccessFile数据流时,可以指定两种模式(“r”或“rw”)之一。
          模式“r”表明这个数据流是只读的,模式“rw”表明这个数据流即允许读也允许写。

        唉,没啥意思,暂时不深究了

    文件导航和I/O

        创建目录:

    1 import java.io.File;
    2 public class CreateDir {
    3    public static void main(String args[]) {
    4       String dirname = "/tmp/user/java/bin";
    5       File d = new File(dirname);
    6       // Create directory now.
    7       d.mkdirs();
    8   }
    9 }

        目录列表:

     1 import java.io.File;
     2 public class ReadDir {
     3    public static void main(String[] args) {
     4 
     5       File file = null;
     6       String[] paths;
     7 
     8       try{      
     9          // create new file object
    10          file = new File("/tmp");
    11 
    12          // array of files and directory
    13          paths = file.list();
    14 
    15          // for each name in the path array
    16          for(String path:paths)
    17          {
    18             // prints filename and directory name
    19             System.out.println(path);
    20          }
    21       }catch(Exception e){
    22          // if any error occurs
    23          e.printStackTrace();
    24       }
    25    }
    26 }

    相关博客:

    http://www.cnblogs.com/zhengbin/p/5184271.html 

  • 相关阅读:
    thinkphp 视图定义
    ThinkPHP支持模型的分层
    thinkphp 虚拟模型
    thinkphp 参数绑定
    thinkphp 自动完成
    thinkphp 自动验证
    thinkphp 子查询
    thinkphp 动态查询
    ThinkPHP sql查询
    thinkphp 统计查询
  • 原文地址:https://www.cnblogs.com/zhengbin/p/5189492.html
Copyright © 2011-2022 走看看