黑马程序员_温习 IO流三 (个人笔记)摘要(IO流操作规律--File类---递归----Propertise(集合)

---------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net+Android+IOS开发</a>、<a href="http://edu.csdn.net"target="blank">.Net培训</a>、期待与您交流! ----------------------


摘要(IO流操作规律--File类---递归----Propertise(集合))



IO流操作规范
|--源: InputStream  Reader
|--目的: OutputStream  Writer


通过三个明确来完成


|--明确元和目的


|--源: InputStream  Reade


|--目的: OutputStream  Writer
|--操作的是否是纯文本


|--是:字符流


|--否:字节流


|--明确使用哪个具体对象

|--源:内存,硬盘,键盘


|--目的:内存,硬盘,控制台


例:
将一个文本文件中的数据储存到另一个文件中


分析:
源:-->文本文件-->硬盘 -->Reader -->FileReader --->BufferedReader(增强)


目的:-->文本文件-->硬盘--->Writer --->FileWriter --->BufferedWriter(增强)




File类:用于将文件或者文件夹(地址)封装成对象,方便对其操作
|--File对象可以作为参数传递给流的构造函数
|--创建File对象,将指定参数封装成file对象(已有或者没有的文件,文件夹,都可以封装成对象)


例如:
File f = new File("a.txt");//不管文件或者文件夹(地址)是否存在,都将其封装成对象


File f = new File("C:\\abc","Deme.txt");//文件和地址分成两个参数,封装成对象


常用的操作方法:
|--创建:
|--创建多级目录:boolean mkdirs()
|--创建单级目录:boolean mkder()
|--指定位置创建文件,若文件已存在(只比较名,不管什么类型文件),则不创建,返回flase,若路径不存在也创建失败
boolean createNewFile()

|--删除:
|--删除指定文件:boolean delete()
|--在程序退出时删除指定文件:void deleteOnExit()
|--判断:
|--文件是否可执行:boolean canExecute()
|--文件或路径是否存在:boolean exists()
|--是否是一个文件夹(路径):boolean isDirectory()
|--是否是文件:boolean isFile()
|--是不是隐藏文件:boolean isHidden()
|--是不是绝对路径:boolean isAbsolute()


|--获取:
|--获取文件或文件夹名:String getName()
|--获取路径名,相对路径返回相对路径名:String getpath()
|--获取父目录路径名,相对路径为null:String getparent()
|--获取绝对路径,不管是不是相对路径:String getAbsolutePath()
|--获取最后一次修改时间:long lastModified()
|--获取文件长度:long length()
|--重命名:boolean renameTo(File dest) 


|--获取根目录(可用的):File listRoots()


|--获取指定目录下的文件和文件夹名(包括隐藏的),若指定目录不存在返回null,若目录下没有文件或文件夹
返回0
String[] list()
例:


File f = new File("c:\\"); //将指定文件或目录封装为对象
String [] s = f.list(); //调用list方法,获取指定目录下的文件和文件夹名.让字符串数组记录
for(String z : s)
{
System.out.println(z);
}

|--将指定目录下的文件封装成对象
File[] listFiles(FileFilter filter)


|--获取指定目录下满足某条件的文件或文件夹名
String[] list(FilenameFilter filter) 


递归:即方法的内部,调用自身方法的形式


递归注意事项:
|--限定条件(避免死循环)
|--注意递归次数(避免占内存溢出)


例:


class Demo2
{
public static void main(String[] args)
{
toBin(6)
}
public static void toBin(int num)
{
if(num>0)
{
toBin(num/2);
System.out.println(num%2);
}
}
}
结果: 1
       1 
  0
图例:






练习:删除带内容的目录
原理:在windows中,删除目录是从里向外删除的(最里边的文件开始删除,逐级向外删除)
概要:利用递归原理实现从里向外删除


class Demo2
{
public static void main(String[] args)
{
File dir = new File("d:\\"); //将路径封装成对象
removeDir(dir); //调用删除方法
}
public static void removeDir(File dir) //自制删除带内容目录方法
{
File[] files = dir.listFiles(); //先将目录下文件和文件夹封装成对象,装入数组
for(int x =0;x<files.length;x++) //循环 到 数组长度
{
if(file[x].isDirectory()) //如果某个元素是一个路径
removeDir(file[x]); //再调用自身方法 把这个路径传入,再循环
else
System.out.println(file[x].toString()+"::"+files[x].delete()); //若不是路径,则打印,并删除
}
Sop(dir+"::"+dir.delete());//循环完后。目录下已无文件和文件夹,则可删除该目录了
}
}


Propertise类:是Map集合中Hashtable的子类,所以具备了map集合的特点,且存储的键值对都是字符串
加载数据时,需要数据有固定格式  : 键 = 值  如 "abc" = 123


特点:
|--是集合和IO技术相结合的集合容器
|--可以用来以键值对的形式配置文件


特有方法:将键存入Set集合中: Set<String> stringPropertyNames() 


例:存入配置文件(字符流举例)


摘要:文件类的数据格式必须是键值对的形式如  "a" = 10


BufferedReader bufr = new BufferedReader(new FileReader("Demo.txt"));
String line = null;
Properties prop = new Properties();//建立pro类对象
while ((line= bufr.readLine())!=null)
{
String[] arr = line.split("=");//切开"="号
prop.setProperty(arr[0],arr[1]);//将每次被切开的内容,分别当键和值 存入pro集合中
}
bufr.close()


例:取出和修改(字节流举例)


FileInputStream fis = new FileInputStream("Demo.txt");
Properties prop = new Properties();//建立pro类对象


prop.load(fis); //load方法 实现直接将InputStream流中的数据,存入pro集合中


FileOutputStream fos = new FileOutputStream("Demo.txt");
prop.store(fos,"haha"); //store方法 实现将pro集合中的数据 直接写入流所指定的文件中
//"哈哈"为注释信息,读取时pro不会识别
fos.close();

fis.colse();


---------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net+Android+IOS开发</a>、<a href="http://edu.csdn.net"target="blank">.Net培训</a>、期待与您交流! ----------------------










  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值