二进制I/O类

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

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

TestFileStream.java

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

 import java.io.RandomAccessFile;

 public class TestDataStream {
public static void main(String[] args) throws java.io.FileNotFoundException,java.io.IOException{
java.io.DataOutputStream dos = new java.io.DataOutputStream(new java.io.FileOutputStream("temp.dat"));
dos.writeUTF("BinZheng");
dos.writeDouble(95.5);
dos.close(); java.io.DataInputStream dis = new java.io.DataInputStream(new java.io.FileInputStream("temp.dat"));
System.out.println("姓名:"+dis.readUTF()+"-"+"分数:"+dis.readDouble());
dis.close(); RandomAccessFile raf = new RandomAccessFile("1234.txt", "rw");
raf.write(51);
raf.close();
}
}

TestDataStream.java

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

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

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

TestObjectOutputStream.java

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

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

TestObjectStreamForArray.java

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

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

文件导航和I/O

    创建目录:

 import java.io.File;
public class CreateDir {
public static void main(String args[]) {
String dirname = "/tmp/user/java/bin";
File d = new File(dirname);
// Create directory now.
d.mkdirs();
}
}

    目录列表:

 import java.io.File;
public class ReadDir {
public static void main(String[] args) { File file = null;
String[] paths; try{
// create new file object
file = new File("/tmp"); // array of files and directory
paths = file.list(); // for each name in the path array
for(String path:paths)
{
// prints filename and directory name
System.out.println(path);
}
}catch(Exception e){
// if any error occurs
e.printStackTrace();
}
}
}

相关博客:

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

Java基础——I/O续的更多相关文章

  1. 【概念笔记】JAVA基础 - part2

    IT`huhiu前言录 这是续JAVA基础 - part1 链接http://www.cnblogs.com/ithuhui/p/5922067.html的. 笔记慢慢在修改和补充 JAVA里面重要的 ...

  2. Java基础知识总结(超级经典)

    Java基础知识总结(超级经典) 写代码: 1,明确需求.我要做什么? 2,分析思路.我要怎么做?1,2,3. 3,确定步骤.每一个思路部分用到哪些语句,方法,和对象. 4,代码实现.用具体的java ...

  3. 毕向东—Java基础知识总结(超级经典)

    Java基础知识总结(超级经典) 写代码: 1,明确需求.我要做什么? 2,分析思路.我要怎么做?1,2,3. 3,确定步骤.每一个思路部分用到哪些语句,方法,和对象. 4,代码实现.用具体的java ...

  4. Java基础IO流(一)

    IO概念: 大多数应用程序都需要实现与设备之间的数据传输,例如键盘可以输入数据,显示器可以显示程序的运行结果等.在Java中,将这种通过不同输入输出设备(键盘,内存,显示器,网络等)之间的数据传输抽象 ...

  5. 黑马毕向东Java基础知识总结

    Java基础知识总结(超级经典) 转自:百度文库 黑马毕向东JAVA基础总结笔记    侵删! 写代码: 1,明确需求.我要做什么? 2,分析思路.我要怎么做?1,2,3. 3,确定步骤.每一个思路部 ...

  6. 尚学堂JAVA基础学习笔记

    目录 尚学堂JAVA基础学习笔记 写在前面 第1章 JAVA入门 第2章 数据类型和运算符 第3章 控制语句 第4章 Java面向对象基础 1. 面向对象基础 2. 面向对象的内存分析 3. 构造方法 ...

  7. Java基础系列8——IO流超详细总结

    该系列博文会告诉你如何从入门到进阶,一步步地学习Java基础知识,并上手进行实战,接着了解每个Java知识点背后的实现原理,更完整地了解整个Java技术体系,形成自己的知识框架. 在初学Java时,I ...

  8. Java 基础(四)| IO 流之使用文件流的正确姿势

    为跳槽面试做准备,今天开始进入 Java 基础的复习.希望基础不好的同学看完这篇文章,能掌握泛型,而基础好的同学权当复习,希望看完这篇文章能够起一点你的青涩记忆. 一.什么是 IO 流? 想象一个场景 ...

  9. 毕向东java基础总结

    Java基础知识总结(超级经典) 写代码: 1,明确需求.我要做什么? 2,分析思路.我要怎么做?1,2,3. 3,确定步骤.每一个思路部分用到哪些语句,方法,和对象. 4,代码实现.用具体的java ...

随机推荐

  1. 【C# 反射泛型】

    C# 反射泛型 摘自:http://www.itwis.com/html/net/c/20110411/10175.html C#泛型反射和普通反射的区别,泛型反射和普通反射的区别就是泛型参数的处理上 ...

  2. javascript加速运动

    <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...

  3. TCP/IP协议栈与数据包封装+TCP与UDP区别

    ISO制定的OSI参考模型的过于庞大.复杂招致了许多批评.与此对照,由技术人员自己开发的TCP/IP协议栈获得了更为广泛的应用.如图2-1所示,是TCP/IP参考模型和OSI参考模型的对比示意图. T ...

  4. POJ 2240 Arbitrage(floyd)

    http://poj.org/problem?id=2240 题意 : 好吧,又是一个换钱的题:套利是利用货币汇率的差异进行的货币转换,例如用1美元购买0.5英镑,1英镑可以购买10法郎,一法郎可以购 ...

  5. http://www.aboutyun.com/thread-8792-1-1.html

    http://www.aboutyun.com/thread-8792-1-1.html

  6. 【nginx运维基础(1)】Nginx的编译安装与使用

    nginx的官方手册: http://nginx.org/en/docs/ 编译安装 下载地址: http://nginx.org/en/download.html # 为了支持rewrite功能,我 ...

  7. 【mongoDB中级篇①】游标cursor

    简述 通俗的说,游标不是查询结果,可以理解为数据在遍历过程中的内部指针,其返回的是一个资源,或者说数据读取接口. 客户端通过对游标进行一些设置就能对查询结果进行有效地控制,如可以限制查询得到的结果数量 ...

  8. spring autoWire注解和@resource注解区别

    1.autoWire注解主要是按类型匹配.因为autowire的扫描机制,是按照接口类型来扫描bean的. 而JSR250 @resource注解是通过名称扫描注入的. @autowire注解的扫描方 ...

  9. Notepad++ 16进制编辑功能

    Notepad++可以编辑PE文件(二进制文件即HEX码),2进制.16进制都可以,通过附加的组件HexEditor即可实现. Hex Editor下载  Hex Editor下载页面,包括各个历史版 ...

  10. linux自动启动shell和init概述(fedora use systemmd now!!!)

    linux运行级别  linux启动之后会在一个级别运行,下面列出了这些运行级别: 0 系统停止 1 单用户系统,不需要登陆 2 多用户系统但不支持NFS,命令行模式登陆 3 完整多用户模式,命令行模 ...