一、File类
File类只能用于表示文件的信息(大小、名称等),不能用于文件的访问。
1.1 File目录操作(1)file.exists() 判断目录(文件夹)是否存在
(2)file.mkdir() 创建该目录(文件夹)
(3)file.mkdirs() 创建该多级目录(文件夹)
(4)file.delete() 删除该目录(文件夹)
(5)file.isDirectory() 判断file是否是目录(文件夹)
(6)file.listFiles() 列出该目录下的直接子目录
1.2 File文件操作
(1)file.exists() 判断文件是否存在
(2)file.createNewFile() 创建该文件
(3)file.delete() 删除该文件
(4)file.getName() 获得文件名
(5)file.getParent() 获得文件的父路径
1.3 代码:遍历目录下的所有子目录及文件
实现步骤:
1、首先判断该目录是否存在,若不存在抛出异常;
2、再判断是否是目录,若不是则抛出异常;
3、创建一个File类型的数组,存放该目录下的直接子目录;
4、如果子目录存在,则遍历该数组中的每一个子目录,判断该子目录是否是目录;
5、如果是目录,则使用递归,继续执行此方法;
6、如果不是,则直接打印此路径到屏幕上。
public static void listDirectory(File dir)throws IOException{
if(!dir.exists()){
throw new IllegalArgumentException("目录"+dir+"不存在!");
}
if(!dir.isDirectory()){
throw new IllegalArgumentException(dir+"不是目录!");
}
File[] files = dir.listFiles();
if(files!=null && files.length>0){ //dir目录下有子目录存在
for(File file:files){
if(file.isDirectory()){//是目录,进行递归
listDirectory(file);
}else{ //不是目录,直接打印路径
System.out.println(file);
}
}
}
}
二、RandomAccessFile类
RandomAccessFile可访问文件内容,进行读写操作。由于支持随机访问文件,则可以访问文件的任意位置。打开文件时,文件指针在开头处point=0。该类的主要方法如下。
(1)raf.write() 写一个字节到文件中去
(2)raf.read() 读取字节
(3)raf.seek(int i) 移动指针位置到i
2.1 代码:使用RandomAccessFile进行文件读写
实现步骤:
1、新建目录及文件,实例化RandomAccessFile,对新建的文件授权读写操作;
2、每次只能写入1个字节,所以整型数据需要通过移位写入4次,字符可通过转换成字节数组进行一次性写入;
3、读取整个文件,首先要将指针移到头部0的位置,开辟一个空间为文件大小的字节数组,可一次性读取整个文件内容。
public static void main(String[] args)throws IOException {
File demo = new File("demo"); //不指定路径将存在项目中的相对路径
if(!demo.exists()){
demo.mkdirs();
}
File file = new File(demo,"raf.dat");
if(!file.exists()){
file.createNewFile();
}
RandomAccessFile raf = new RandomAccessFile(file,"rw");//授予读写权限
int i = 0x7fffffff;//用write方法每次只写一个字节,所以一共要写4次
raf.write(i>>>24);//右移24位,高8位就写进去了
raf.write(i>>>16);
raf.write(i>>>8);
raf.write(i);//不右移,即最后的低8位
//raf.writeInt(i);//可以直接写,上一段代码就是底层实现
String s = "中";
byte[] gbk = s.getBytes("gbk");
raf.write(gbk);
raf.seek(0);//读整个文件,必须把指针移到头部0的位置
byte[] buf = new byte[(int)raf.length()];//raf.length返回long型
raf.read(buf);//一次性读取
System.out.println(Arrays.toString(buf));
raf.close();//一定要加
}
注:文章根据本站相关课程的学习笔记整理而来,有错误或其他任何问题敬请指正,欢迎共同学习交流!
点击查看更多内容
为 TA 点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦