io学习四

File##

java 中的file 类提供以下能力:

  • 检测文件是否存在
  • 读取文件长度
  • 重命名或移动文件
  • 删除文件
  • 检测某个路径是文件还是目录
  • 读取目录中的文件列表

重命名或移动文件
通过调用File类中的renameTo()方法可以重命名(或者移动)文件,代码如下:

File file = new File("c:\data\input-file.txt");

boolean success = file.renameTo(new File("c:\data\new-file.txt"));

当你获得一个File对象之后,可以检测相应的文件是否存在。当文件不存在的时候,构造函数并不会执行失败。

删除文件
通过调用delete()方法可以删除文件,代码如下:

File file = new File("c:\data\input-file.txt");
boolean success = file.delete();

delete()方法与rename()方法一样,返回布尔值表明是否成功删除文件,同样也会有相同的操作失败原因。
这里我只写了我不常用的 详情:http://ifeve.com/java-io-file/

FilterInputStream##

package filter;

public class filter {
	public static void main(String[] args) {
		// FilterInputStream filterInputStream=new FilterInputStream(new FileInputStream(""));
		// 这一句报错的原因是 FilterInputStream 的构造方法是 protected 修饰的
	}
}

BufferInputStream##

package buffer;

import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;

public class Example {
	public static void main(String[] args) throws FileNotFoundException {
		BufferedInputStream bip = new BufferedInputStream(new FileInputStream("randomfile"), 8 * 1024);
		// 可以自己设置 buffer缓冲区的大小
		// bip.read() 函数其实不是一次一次去原文件去读的,其实是在缓冲区的 buf[] 数组去读的,
		// 当读地点标志pos大于了 缓冲器已经读取的数组的标记 它会调用fill 函数 又去填充buf[] 数组
	}
}

序列化io##

package object;

import java.io.FileOutputStream;
import java.io.ObjectOutputStream;

public class Example {
	public static void main(String[] args) throws Exception {
		ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("object.out"));
		oos.writeObject(new String("testObject"));
		oos.writeInt(2);
		oos.writeLong(23l);
		oos.close();
	}
}

oos.close(); 一定要调用close方法 将缓冲区的数据刷新进入 硬盘,不然会得到莫名的Exception

package object;

import java.io.FileInputStream;
import java.io.ObjectInputStream;

public class Example2 {
	public static void main(String[] args) throws Exception {
		ObjectInputStream ois = new ObjectInputStream(new FileInputStream("object.out"));
		System.out.println((String) ois.readObject());
		System.out.println(ois.readInt());
		System.out.println(ois.readLong());
	}
}
testObject
2
23
原文地址:https://www.cnblogs.com/joeCqupt/p/6883208.html