Java 文件(夹)、(字符)文件流、(字符)缓冲流与打印流

实例化

  1、File file = new File(“hello.txt”);

  2、File file2 = new File(absolutePath);

  3、Properties properties = System.getProperties();File file3 = new File(“D:”+File.separator+…);

  4、File file4 = new File(new File(parentPath],filename);

  5、File file5 = new File(parentPath,filename);

相关方法

//绝对路径
String absolutePath = file.getAbsolutePath();
//路径
String path = file.getPath();
//文件(目录)名
String name = file.getName();
//返回父路径
String parent = file.getParent();
//返回文件长度
long length = file.length();
//文件最后修改时间
long time = file.lastModified();
//当前所有文件或目录的名称
String[] li = file.list();
for(String na : li) {
	System.out.println(na);
}
//返回目录下所有文件
File[] files = file.listFiles();
//判断文件是否存在
boolean isExist = file.exists();
//判断是否是文件
boolean isFIle = file.isFile();
//判断是否是目录
boolean isDirectory = file.isDirectory();    

if(!file.exists()) {
	//创建该文件
	file.createNewFile();
}else {
	//删除该文件
	file.delete();
}
//在已有目录基础下创建
boolean flag = file.mkdir();
//创建所有目录(强制)
boolean flag1 = file.mkdirs();

  实现功能:

//递归输出目录中子目录及文件所有名称
public static void printName(File file) {
	System.out.println(file.getName());
	
	if(!file.exists() || file==null) {
		return;
	}else if(file.isDirectory()){
		File[] files = file.listFiles();
		for(File file2 : files) {
			printName(file2);
		}
	}
}
//统计文件(目录)大小
public static void getLength(File src) {
	long length = 0;
	if(src.exists() || src!=null) {
		if(src.isFile())
			length += src.length();
		else {
			File[] files = src.listFiles();
			for(File file : files) {
				getLength(file);
			}
		}
	}
}

文件流

//单个字符读取
FileReader fr = new FileReader(file);
int ch = -1;
while((ch = fr.read()) != -1) {
	System.out.print((char)ch);
}
//使用字符数组读取
int len = -1;
char[] buffer = new char[1024];
while((len = fr.read(buffer)) != -1) {
	System.out.println(new String(buffer,0,len));
}
fr.close();
//写入字符串
FileWriter fw = new FileWriter(file);
fw.write("abc");
fw.flush();
fw.close();

  文件流实现文件的拷贝:

public static void copyFile(File file){
	try(
		FileReader fr = new FileReader(file);
		FileWriter fw = new FileWriter("");
	){
		char[] buffer = new char[1024];
		int len = -1;
		while((len = fr.read(buffer)) != -1) {
			fw.write(buffer,0,len);
		}
	}catch (IOException ioException) {
		ioException.printStackTrace();
	}
}

缓冲流

BufferedReader bufferedReader = new BufferedReader(new FileReader(file);
		
BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(file);
String str = bufferedReader.readLine();  //读取一行
while(str != null) {
	bufferedWriter.write(str);
	bufferedWriter.newLine();         //换行
	bufferedWriter.flush();
	str = bufferedReader.readLine();
}

bufferedWriter.close();

打印流

  打印流只有输出,没有输入

//创建字节流对象
PrintStream ps = new PrintStream(file);		
//创建字符流对象
FileOutputStream fos = new FileOutputStream(file);
PrintWriter pw = new PrintWriter(fos, true);

//使用write写
pw.write('a');
//使用print(自动调用flush)
ps.println('b');

//关闭流
//pw.close();

commons-io工具类

  (Apache commons project 所提供的工具类)

//返回文件大小
long le = FileUtils.sizeOf(file);
//可筛选返回符合条件的文件
Collection<File> files1 = FileUtils.listFiles(file,EmptyFileFilter.NOT_EMPTY , null);
Collection<File> files2 = FileUtils.listFiles(file,EmptyFileFilter.NOT_EMPTY , DirectoryFileFilter.INSTANCE);	
//读取文件
String string = FileUtils.readFileToString(file,"UTF-8");
byte[] bs = FileUtils.readFileToByteArray(file);
List<String> strings = FileUtils.readLines(file,"UTF-8");
LineIterator lineIterator = FileUtils.lineIterator(file);
//写入文件
FileUtils.writeByteArrayToFile(file, "hello".getBytes("UTF-8"));
List<String> datas = new ArrayList<>();
datas.add("a");
FileUtils.writeLines(file, "UTF-8", datas);
//其他方法
FileUtils.copyFile(srcFile, destFile);
FileUtils.copyFileToDirectory(srcFile, destDir);
FileUtils.copyDirectory(srcDir, destDir);
FileUtils.copyURLToFile(source, destination);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值