博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java基础——I/O续
阅读量:5864 次
发布时间:2019-06-19

本文共 5520 字,大约阅读时间需要 18 分钟。

二进制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 object10          file = new File("/tmp");11 12          // array of files and directory13          paths = file.list();14 15          // for each name in the path array16          for(String path:paths)17          {18             // prints filename and directory name19             System.out.println(path);20          }21       }catch(Exception e){22          // if any error occurs23          e.printStackTrace();24       }25    }26 }

相关博客:

 

转载地址:http://krunx.baihongyu.com/

你可能感兴趣的文章
设计模式--代理模式
查看>>
java反射学习笔记
查看>>
小白的进阶之路2
查看>>
spring容器和springmvc容器,以及web容器的关系
查看>>
dos批量重命名
查看>>
MySQL my.cnf 配置文件注释
查看>>
QtQuick大坑笔记之Http的Get与Post操作(带cookie)
查看>>
ArcEngine创建要素集
查看>>
ping命令
查看>>
关于z-index 属性和层级覆盖的相关学习
查看>>
安装MySQLdb时出错:EnvironmentError: mysql_config not found
查看>>
Linux df
查看>>
函数要多小才够好——谈小函数之道
查看>>
python面试题-python相关
查看>>
在云端服务器centos7安装jvm并且运行java程序
查看>>
Python——getpass
查看>>
Dropdownlist的onchange事件应用
查看>>
团队展示(I know)
查看>>
南阳OJ开等问题
查看>>
理解 Redis(5) - 哈希值
查看>>