JAVA中的IO流(一)介绍IO,顺便介绍File

前言

今天划水,就讲讲IO流,关于集合的东西后面再写吧。

IO介绍

IO流就是输入流和输出流,所谓输入流是从硬盘中读取字节到内存中,而输出流则是在内存中的字节写到硬盘中。这个过程感觉就像是硬盘和内存互相建立高速通道,而数据(字节)在其中互相的流动。
在JAVA中万物皆为对象,我们的IO流也不例外,关于IO流的所有类都在io包中,而关于IO流又分为字节流和字符流。可是我们想一想,在电脑中数据都是字节,所以说字符流的底层还是通过字节流实现的,但是我们通过字符流对于字符的操作会更加的便利。
字节流顶层抽象类:InputStream、OutputStream
字符流顶层抽象类:Reader、Writer

文件

也就是File这个类虽然不属于IO流,都是IO流都是要操作硬盘中的数据的,这样是少不了跟文件打交道的,所以先讲一下File。

构造File

构造一个File对象,一般这样写即可,关于路径你可以选择/也可以\\,其实new File(文件路径)只是相当于文件产生了文件流,也就是建立了联系,并不是真正创建文件。

File file = new File("c:/aaa/bbb");//创造File对象
File file = new File("c:/aaa","c:/aaa/bbb");//有两个参数的左边是父文件,右边是子文件
判断

在进行判断该文件路径是否为文件或文件夹的时候不需要写file.exists()了,因为它们也会调用这个方法的。

boolean flag=file.exists();//判断该文件是否存在
boolean flag = file.isFile();//判断是否为文件
boolean flag = file.isDirectory();//判断是否为文件夹

创建

根据得到的文件路径创造文件或文件夹

	if (file.isFile()) {//判断是否为文件
			boolean flag = file.createNewFile();// 建造文件
			File b = file.createTempFile("nbbbbbbb", ".txt", new File("c:/"));// 建造该路径文件的临时文件
		}
	if(file.isDirectory()){//判断是否为文件夹
			boolean mkdir = file.mkdir();//只能创造单个文件,无法创造父路径的文件
			boolean mkdirs = file.mkdirs();//如果有父路径的话则会一起创建
		}

删除

在删除的时候需要注意是删除文件夹还是文件,如果是文件夹的话需要先将文件夹里面的东西删除干净后才能再删除文件夹

file.delete();//删除
file.deleteOnExit();//在JVM退出是删除
查询

如果file对应的是文件夹,我想查看里面的情况需要这样做:

		String[] list = file.list();
		for(String fileName:list){
			System.out.println(fileName);
		}

在调用list方法后可以获取到里面的文件和文件夹路径,同时list还可以重载构造匿名内部类,这也算是一种过滤器,用来判断这些文件、文件夹是否要显示。

	String[] list = file.list(new FilenameFilter() {

			//dir是你查找的文件夹构成的file,name则是这个文件夹里面所有子文件、文件夹的名称,这个name是可以存在多个的
			public boolean accept(File dir, String name) {
				if (new File(name).isDirectory()) {
					return false;//false代表不显示
				} else {
					return true;//true代表显示
				}

			}
		});

还有另外一种过滤器,侧重点不同而已

	//pathname是你搜索的文件夹中子文件、文件夹构成的File对象,最终返回一个File数组
	File[] list = file.listFiles(new FileFilter() {
			public boolean accept(File pathname) {
				return false;
			}
		});
其他

介绍File中一些其他的特有方法

	boolean canRead = file.canRead();//file是否能读
		boolean canWrite = file.canWrite();//file是否能写
		boolean canExecute = file.canExecute();//file是否可以执行
		String path = file.getPath();//获取file对应的路径
		String absolutePath = file.getAbsolutePath();//获取绝对路径
		File absoluteFile = file.getAbsoluteFile();//获取绝对路径对应的File对象
		String parent = file.getParent();//获取父路径
		File parentFile = file.getParentFile();//将父路径变为File对象
		long lastModified = file.lastModified();//文件最后修改时间,可以直接放入Date构造器配合使用

总结

接下来正式介绍IO中的字节流和字符流,敬请期待。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值