黑马程序员————IO流(二)

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);



}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值