二进制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#图片上写文字

    using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Dr ...

  2. jfinal想用到中大型项目中的项目经验分享

    jfinal 用在大项目中更加方便实用,节省无数的开发时间,代码量相对 SSH 减少 75% 至 90%,对于项目结构来说,简单提以下几点: 1:先分大模块,大模块内部可以根据划分的model分成子包 ...

  3. 毕向东JAVA视频讲解(四五课)

    内存的划分: 1,寄存器. 2,本地方法区. 3,方法区. 4,栈内存. 存储的都是局部变量. 而且变量所属的作用域一旦结束,该变量就自动释放. 5,堆内存. 存储是数组和对象(其实数组就是对象) 凡 ...

  4. 【Linux高频命令专题(5)】rmdir

    简述 rmdir是常用的命令,该命令的功能是删除空目录,一个目录被删除之前必须是空的.(注意,rm - r dir命令可代替rmdir,但是有很大危险性.)删除某目录时也必须具有对父目录的写权限. 命 ...

  5. nginx+apache+php+mysql服务器集群搭建

    由于需要搭建了一个基本的服务器集群.具体的配置方案先不说了,到有时间的时候再介绍.下面介绍下整 个方案的优点. 我总共准备了四台阿里云的主机,架设分别是A,B1,B2,C,A在集群的最前面,B1和B2 ...

  6. Error building Player: Win32Exception: ApplicationName=‘xxxxxxxxxxxxxxxxxx//sdk\tools\zipalign.exe' , CommandLine='4 的解决办法

    更新了安卓SDK后,有时候Unity编译失失败,报错类似 Error building Player: Win32Exception: ApplicationName='D:/Program File ...

  7. python url编码,解码

    >>> urllib.unquote('%E4%B8%BD%E6%B1%9F') >>> data '\xe4\xb8\xbd\xe6\xb1\x9f' >& ...

  8. Java NIO1

    发现了一个很好的学习Java的外国网站,英语都是很简单的啦,看英语舒服些,关于NIO的系列就直接参照此网站了,而且是英语的! http://tutorials.jenkov.com/ Java NIO ...

  9. linux协议栈部分资料

    socket实现:http://blog.csdn.net/zhangskd(含有tcp/ip专栏) http://blog.chinaunix.net/uid-20528014-id-90573.h ...

  10. 图像二值化----otsu(最大类间方差法、大津算法)

    最大类间方差法是由日本学者大津于1979年提出的,是一种自适应的阈值确定的方法,又叫大津 法,简称OTSU.它是按图像的灰度特性,将图像分成背景和目标2部分.背景和目标之间的类间方差越大,说明构成图像 ...