java的I/O流,开发教学第二章作业

本文详细介绍了Java中File类的常用方法,包括文件的创建、读取、列出目录等操作,以及如何使用文件过滤器筛选特定类型的文件。同时,深入探讨了RandomAccessFile类的使用,讲解了其随机读写文件的功能,包括文件指针的位置控制、文件长度的获取与设置,以及各种写入方法。

1.1、File类中的常用的方法列举

package create;

import java.io.File;
import java.io.IOException;
import java.util.Arrays;

public class InputOut {
	public static void main(String[] args) throws IOException  {
		File set = new File("D:\\kinggsoft");
		//打印输出文件名
		System.out.println(set.getName());
		//获取文件的路径
		System.out.println(set.getAbsolutePath());
		//在当前文件夹下创建目录
		File jf= new File(set,"dome");
		//如果目录不存在
		if (!jf.exists()) {
			jf.mkdir();
		}
		//在在jf目录中创建test.txt
		File test = new File(jf,"test.txt");
		if (!test.exists()) {
			test.createNewFile();
		}
		//获取jf目录中的所有文件
		File[] files = jf.listFiles();
		//获取jf目录中所有文件的名字
		System.out.println(Arrays.toString(files));
		//显示test文件的绝对路径
		System.out.println(test.getCanonicalPath());
	}

}

1.1.1、文件过滤器
实现思想

调用FileFilter,用另外的类去重写接口中的方法来进行实现
用listFiles()方法可以接受一个FileFilter的参数
,接口FileFilter中含有一个accept方法会对指定的File文件中的子目录和文件进行迭代判断是否为符合条件的文件,返回true与false
在主方法中遍历输出文件的名称
import java.io.File;
import java.io.IOException;
import java.util.Arrays;
import java.io.FileFilter;
//import javax.swing.filechooser.FileFilter;

public class InputOut {
	public static void main(String[] args) throws IOException  {
		//文件过滤器
		File setFile = new File("D:\\kinggsoft");
		//用listFiles()方法可以接受一个FileFilter的参数,接口FileFilter中含有一个accept方法
		//会对指定的File文件中的子目录和文件进行迭代
		File[] files = setFile.listFiles(new MyFilter());
		for (File f:files) {
			System.out.println(f.getName());
		}
	}

}
//FileFilter的实现类
class MyFilter implements FileFilter{

	@Override
	public boolean accept(File pathname) {
		return pathname.getName().endsWith(".java") && pathname.isFile();
	}	
}

1.2 RandomAccessFile类
RandomAccessFile类的主要功能是完成随机读取功能,可以读取指定位置的内容。
File类只是针对文件本身进行操作的,而如果要想对文件内容进行操作,则可以使用RandomAccessFile类,RandomAccessFile属于随机读取类,可以随机读取一个文件中指定位置的数据
第二个参数打开文件的模式,有以下四种:注意没有只写“w”方式

RandomAccessFile(File file, String mode) 
 创建从中读取和向其中写入(可选)的随机访问文件流,该文件由 File 参数指定。

(1) “r” 以只读方式打开。

(2)"rw"以读写方式打开,如果该文件尚不存在,则尝试创建该文件。

(3) “rws”

(4)“rwd”

2.相关方法

(1) long getFilePointer():返回文件记录指针的当前位置,

(2) void seek(long pos):将文件记录指针定位到pos位

(3) void close():关闭文件,文件访问结束后一定要关闭文件,否则会发生意想不到的错误。

(4) long length() :返回此文件的长度(字节)。

(5) void setLength(long newLength) throws IOException :设置文件的长度

如果 length 方法返回的文件的现有长度大于 newLength 参数,则该文件将被截短。在此情况下,如果 getFilePointer 方法返回的文件偏移量大于 newLength,那么在返回此方法后,该偏移量将等于 newLength。

如果 length 方法返回的文件的现有长度小于 newLength 参数,则该文件将被扩展。在此情况下,未定义文件扩展部分的内容。

(6) 写方法:write(),writeBoolean(),writeByte(),writeBytes(),writeChar(),writeChars()

import java.io.File;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.util.Arrays;
import java.io.FileFilter;
//import javax.swing.filechooser.FileFilter;

public class InputOut {
	public static void main(String[] args) throws IOException  {
		try {
			RandomAccessFile rf = new RandomAccessFile("a.txt", "rw");
			//输出默认的指针位置
			System.out.println(rf.getFilePointer());
			//写入字符‘A’和‘B’
			rf.write('A');
			
			System.out.println(rf.getFilePointer());
			rf.write('B');
			//写入GBK编码的字符
			String s = "中";
			byte[] gbk = s.getBytes("gbk");
			rf.write(gbk);
			//文件末尾
			System.out.println(rf.getFilePointer());
			//移动文件指针到"头"
			rf.seek(0);
			//一次性读取内容到buf汇总
			byte[] buf = new byte[(int)rf.length()];
			//从文件中读取内容到buf数组中。尽可能的填满
			rf.read(buf);
			System.out.println(Arrays.toString(buf));
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ctrl精

面试很多问题,积攒不容易

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值