File类
用来将文件和文件夹封装成对象
方便对文件与文件夹的属性信息进行操作。
File对象可以作为参数传递给流的构造函数。
File类的常见方法:
创建:
boolean createNewFile():在指定位置创建文件,该文件如果已经存在则不创建,返回false。和输出流不一样,输出流对象一建立创建文件,如果文件存在,则会覆盖。
删除:
boolean delete():删除失败会返回false。
void deleteOnExit():在程序退出时会删除文件。
判断:
boolean exists():文件是否存在。
isFile()
isDirectory()
isHidden()
isAbsolute
获取信息:
getName()
getPath()
getParent()
RandomAccessFile类
1、RandomAccessFile类的实例支持对随机访问文件的读取和写入,它既能读,又能写。
2、该类不算是IO体系的子类,而是直接继承Object,但是它是IO包成员,因为它具备读写功能,内部封装了一个数组,通过指针可以操作数组中的元素。
3、可以通过getFilePointer方法获取指针位置,通过seek方法,设置文件指针的位置。
4、该对象将字节输入流和输出流封装。
实例
public class Demo {
public static void main(String[] args) throws IOException{
read();
}
public static void writer() throws IOException{
RandomAccessFile accFile = new RandomAccessFile("RandomAccess.txt","rw");
//写入内容;
accFile.writeInt(10);
accFile.writeChar('a');
accFile.writeUTF("中");
accFile.close();
System.out.println("写入完毕");
}
public static void read() throws IOException{
RandomAccessFile accFile = new RandomAccessFile("RandomAccess.txt","rw");
System.out.println("指针位置:" + accFile.getFilePointer());
//读取的时候,要按照写入的顺序
int v1 = accFile.readInt();
System.out.println("读取的内容:" + v1);
System.out.println("指针位置:" + accFile.getFilePointer());//4(int是4个字节的空间)
char v2 = accFile.readChar();
System.out.println("读取的内容:" + v2);
System.out.println("指针位置:" + accFile.getFilePointer());//6
String v3 = accFile.readUTF();
System.out.println("读取的内容:" + v3);
System.out.println("指针位置:" + accFile.getFilePointer());//2(多存了2个字节) + 3-->6 + 5 --> 11
//将文件指针设为4
accFile.seek(4);
char v4 = accFile.readChar();
System.out.println("指针重设为4后读取的内容:" + v4);
accFile.close();
}
}
基本数据类型流对象
操作基本数据类型的流对象:DataInputStream和DataOutputStream
运用实例
public class Demo {
public static void main(String[] args) throws IOException{
DataOutputStream dataOut = new DataOutputStream(new FileOutputStream("DataOutputStream.txt"));
byte b1 = 20;
dataOut.writeByte(b1);
short s1 = 30;
dataOut.writeShort(s1);
dataOut.writeInt(40);
dataOut.writeLong(50L);
dataOut.writeFloat(60.0F);
dataOut.writeDouble(70.0);
dataOut.writeBoolean(true);
dataOut.writeChar('a');
//释放资源
dataOut.close();
//使用DataInputStream读取数据
DataInputStream dataIn = new DataInputStream(new FileInputStream("DataOutputStream.txt"));
byte b2 = dataIn.readByte();
short s2 = dataIn.readShort();
int v1 = dataIn.readInt();
long v2 = dataIn.readLong();
float v3 = dataIn.readFloat();
double v4 = dataIn.readDouble();
boolean v5 = dataIn.readBoolean();
char v6 = dataIn.readChar();
System.out.println(b2);
System.out.println(s2);
System.out.println(v1);
System.out.println(v2);
System.out.println(v3);
System.out.println(v4);
System.out.println(v5);
System.out.println(v6);
}
}