------Java培训、Android培训、iOS培训、Net培训、期待与您交流! -------
一、文件
IO操作经常处理的设备之一是文件。而Java语言提供了File类和RandomAccessFile类来对文件进行处理。
(1)File类
File类是IO包中唯一代表磁盘文件本身的对象。File类定义了一些与平台无关的方法来操作文件,可以通过调用File类中的方法,实现创建、删除、重命名文件等。File类的对象主要用来获取文件本身的一些信息,如文件所在的目录、文件的长度、文件读写权限等。数据流可以将数据写入到文件中,而文件也是数据流常用的数据媒体。
可以使用File类创建一个文件对象,通常使用以下3种构造方法来创建文件对象。
①File(String pathname)
该构造方法通过将给定路径名字符串转换为抽象路径名来创建一个新File实例。
pathname:是指路径名称(包含文件名)。
②File(String parent ,String child)
该构造方法根据定义的父路径和子路径字符串(包含文件名)创建一个新的File对象实例。
parent:父路径字符串
child:子路径字符串
③File(File f ,String child)
该构造方法根据parent抽象路径名和child路径名字字符串创建一个新的File对象实例。
f:父路径对象
child:子路径字符串
File类中定义了一些方法,允许对文件和目录进行创建、修改与删除操作,其有关操作方法如下图:
实例:
import java.io.File;
import java.io.IOException;
public class FileTest {
public static void main(String[] args) {
//创建FileTest类文件对象
File file = new File("C:/Users/Administrator/Desktop/集合","test.txt");
//如果文件存在,将文件删除并输出提示信息
if (file.exists()) {
file.delete();
System.out.println("文件已删除");
} else {
//使用try-catch语句捕捉可能出现的异常
try {
//创建文件并输出提示信息
file.createNewFile();
System.out.println("文件已创建");
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
控制台输出内容:
文件已创建
File类中获取文件本身信息包括获取文件的名字、文件的长度、文件的路径、判断文件是否可读或者可写、是否存在等。而获取文件本身信息的方法以及方法描述如下表:
示例:
import java.io.File;
public class MyFileText {
public static void main(String[] args) {
File f = new File("C:/Users/Administrator/Desktop/test.txt");
System.out.println("该文件的名字:"+f.getName());
System.out.println("该文件的绝对路径为:"+f.getAbsolutePath());
System.out.println("该文件的父目录为:"+f.getParent());
System.out.println("该文件的路径:"+f.getPath());
System.out.println("该文件长度:"+f.length());
}
}
运行结果:
该文件的名字:test.txt
该文件的绝对路径为:C:\Users\Administrator\Desktop\test.txt
该文件的父目录为:C:\Users\Administrator\Desktop
该文件的路径:C:\Users\Administrator\Desktop\test.txt
该文件长度:0
(2)RandomAccessFile类
除了File类以外,Java提供了用来专门处理文件的类,称之为随机访问文件RandomAccessFile类。该类提供了更加完善的、对文件输入/输出操作的功能。RandomAccessFile类可以在任意位置进行读/写操作,处理文件更加灵活。
RandomAccessFile类的构造方法:
①RandomAccessFile(File file,String mode);
创建随机存取文件流,文件名由File参数指定;
②RandomAccessFile(String name, String mode);
创建随机存取文件流,文件具有指定名称
mode的值及含义如下:
RandomAccessFile类中的一些主要方法及功能描述:
示例:
import java.io.IOException;
import java.io.RandomAccessFile;
public class MyRandomAccessFile {
public static void main(String[] args) throws IOException {
File file = new File("C:/Users/Administrator/Desktop/test.txt");
//如果文件已存在,则删除后重新创建一个空文件
if (file.exists()) {
file.delete();
file.createNewFile();
}
//以读/写模式创建RandomAccessFile对象
RandomAccessFile rafile = new RandomAccessFile(file, "rw");
//往rafile对象写入字符内容
rafile.writeBytes("One dream.");
System.out.println(rafile.getFilePointer());
//遍历rafile对象内容
for (int i = 0; i < rafile.length(); i ++) {
//设置文件指针位置
rafile.seek(i);
//将字节强制转换成字符
System.out.print((char)rafile.readByte());
}
}
}
运行结果:
10
One dream.