您的位置:首页 > 职场人生

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

2015-05-13 21:55 253 查看
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.readCha
4000
r();
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);

}

}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: