java基础——IO流

一、IO流概述

IO技术主要用来:处理设备上的数据,处理过程通常存在两端:数据源    数据汇(目的),数据在这两端进行传输,也称之为数据的流动,所以IO技术也叫IO流

IO流是用来处理输入输出解决设备上的数据的传输问题

IO流分类:

1、根据处理数据类型的不同分为:字符流和字节流

2、根据数据流向不同分为:输入流和输出流

二、IO流原理

Jvm会调用所在操作系统完成输入输出动作,使用系统资源,JVm也会暴露出相关的对象提供给开发者,便于使用输入输出工具,这些工具都在java.IO包中


三、file类

java.io.File类用于描述文件和文件夹(目录)。

①  获取文件详细信息

getName()获取文件名称

getPath()获取文件的相对路径

getAbsolutePath()获取文件的绝对路径

lastModified()获取最后一次修改的时间,获取的是毫秒值,所以要转化为文本格式,要自定义一个时间格式

②  文件的创建以及删除

createNewFile()创建文件

mkdir()创建单级目录    mkdirs() 创建多级目录

delete()删除       在删除目录时,若这个目录里面有内容,则删除失败, 因为要符合windows的规则从里面往外面删,要先将目录里面的内容清空才可以删除目录,假如文件存在却还是删除不了这是为什么呢?原因有以下两点:1,文件正在被使用  2,文件是系统文件

exists()判断是否存在

isFile()判断是否是同一个文件

isDirectory()判断是否是同一个目录

判断是否是同一个目录或文件是要先判断是否存在

③  list和listfile

④  递归

递归:函数自身调用自身,

注意:1、必须定义条件

       2、递归的次数不要太多

  小心StackOverFlowReeor栈内存溢出

什么时候使用递归呢?

  功能被重复的使用,无论多少次,每次使用功能参数都不同

不要把过滤器对象定义在递归的方法中,因为方法递归会不断的压栈,过滤器对象会创建很多,浪费内存,单独定义一个过滤器,将其作为参数传递给递归方法即可

class FileDemo3 {
	public static void main(String[] args)
	{
		File dir = new File("d:\\java\\javacode");
		showdir(dir);
	}
	public static void showdir(File dir)
	{
		System.out.println(dir);
		File[] files = dir.listFiles();
		for(int x = 0; x<files.length;x++)
		{
			if(files[x].isDirectory())
			{
				showdir(files[x]);
			}
			else
			System.out.println(files[x]);
		}
	}

		
	public static void toBin(int num)
	{
		if(num>0)
		{
			toBin(num/2);
			sop(num%2);
		}
	}
	
	public static int getSum(int num)
	{
		if(num==1)
			return 1;
		return num+getSum(num-1);
	}
	
	public static void sop(Object obj)
	{
		System.out.println(obj);
	}
}


四、字节流和字符流

1 .字节流
InputStream                  ->FileInputStream
OutputStream                 ->FileOutputStream

2 . 字符流
Reader -> BufferedReader     -> LineNumberReader 
       -> InputStreamReader  -> FileReader

Writer -> BufferedWriter
       -> OutputStreamWriter -> FileWriter
InputStreamReader   OutputStreamWriter  为转换流,FileReader FileWriter为其子类



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值