JAVA之旅(二十九)——文件递归,File结束练习,Properties,Properties存取配置文件,load,Properties...
JAVA之旅(二十九)——文件递归,File结束练习,Properties,Properties存取配置文件,load,Properties的小练习
我们继续学习File
一.文件递归
我们可以来实现一个文件管理器,简单的,但是在此之前,我们先来做点小案例
package com.lgl.hellojava; import java.io.File; public class HelloJJAVA { public static void main(String[] args) { File dir = new File("E:\\AndroidDelepoer"); showDir(dir); } private static void showDir(File dir) { System.out.println("目录:" + dir); File[] fils = dir.listFiles(); for (int i = 0; i < fils.length; i++) { if (fils[i].isDirectory()) { showDir(fils[i]); } else { // 列出根目录 System.out.println("files" + fils); } } } }
因为目录中海油目录,只要使用同一个列出目录功能的函数完成即可,在列出过程中出现的还是目录的话,还可以再此的功能,,也就是函数自身调用自身,这种表现形式,或者手法称为递归
//递归 private static void method(){ method(); }
你可以看
private static void toBin(int num) { while (num > 0) { toBin(num / 2); System.out.println(num % 2); // num = num / 2; } }
二.File结束练习
File讲到这里也是差不多的讲完了,感觉还不错,有很多知识点,我们就用一个小练习来结束这个知识点吧!
- 将一个指定目录下的java文件的绝对路径,存储到一个文本文件中,建立一个java文件列表的文件
package com.lgl.hellojava; import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.util.ArrayList; public class HelloJJAVA { public static void main(String[] args) { /** * 思路: * 1.对指定的目录进行递归 * 2.获取递归过程所有的java文化的路径 * 3.将这些路径存储到集合中 * 4.将集合中的数据写入到一个文件中 */ File file = new File("f:\\"); java.util.List<File> list = new ArrayList<File>(); fileToList(file, list); // System.out.println(list.size()); File name = new File(file,"HelloJAVA.java"); writeToFile(list, name.toString()); } public static void fileToList(File dir, java.util.List<File> list) { File[] files = dir.listFiles(); for (File file : files) { if (file.isDirectory()) { fileToList(file, list); } else { // 判断java文件 if (file.getName().endsWith(".java")) { list.add(file); } } } } // 写入文件 public static void writeToFile(java.util.List<File> list, String javaFileList) { BufferedWriter bufw = null; try { bufw = new BufferedWriter(new FileWriter(javaFileList)); for (File f : list) { String path = f.getAbsolutePath(); bufw.write(path); bufw.newLine(); bufw.flush(); } } catch (IOException e) { try { throw e; } catch (IOException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } } } }
三.Properties
Properties我们之前就早有接触了,他是hastable的子类,也就是说它具备map集合的特点,而且他里面存储的键值对都是字符串
- 该对象的特点,可以用于键值对形式的配置文件
这也是一个工具类,我们可以来学习学习,先来演示一下使用情况吧,我们从set,get说起
package com.lgl.hellojava; import java.util.Properties; import java.util.Set; public class HelloJJAVA { public static void main(String[] args) { SetAndGet(); } // 设置和获取元素 private static void SetAndGet() { Properties prop = new Properties(); prop.setProperty("张三", "20"); System.out.println(prop); String property = prop.getProperty("张三"); System.out.println(property); Set<String> stringPropertyNames = prop.stringPropertyNames(); for (String s : stringPropertyNames) { // 打印姓名 System.out.println(s); // 打印值 System.out.println(prop.getProperty(s)); } } }
一览无余,打印的结果
四.读取配置文件
我们配置文件如果已经存在的话,我们就直接去读取了
- 我们来演示一下如何将流中的数据存储到集合中,想要通过键值对的形式保存起来
说白了就是读取本地的一个文件,然后通过键值对保存起来,我们用代码来实现
/** * 思路 * 1.用一个流和info.txt文件关联 * 2.读取遗憾数据,将该行数据进行去切割 * 等号左边的作为键,右边的就是值 */ private static void ReadTxt(){ try { BufferedReader bufr = new BufferedReader(new FileReader("info.txt")); String line = null; Properties properties = new Properties(); while((line = bufr.readLine()) != null){ System.out.println(line); String [] arr = line.split("="); System.out.println(arr[0]+"...."+arr[1]); //存 properties.setProperty(arr[0], arr[1]); } bufr.close(); System.out.println(properties); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }
这样我们输出的就是
五.load
JDK1.6以后出现的load就取代了上面的哪个方式,我们一起来实现一下吧
private static void loadDemo(){ try { FileInputStream fish = new FileInputStream("info.txt"); Properties properties = new Properties(); //将流中的数据加载进集合 properties.load(fish); System.out.println(properties); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } }
这样就可以达到效果了
六.Properties的小练习
- 用于记录应用程序运行的次数,如果使用次数已到,那么给出注册提示,这个很容易想到的是计算器,可是这个程序中,是自增,而且随着程序而存在的,如果程序退出了,这个计数也同样的消失,下一次启动程序又是从0开始了,这样不是我们想要的
我们现在要做的是程序退出之后数据任然存在而且继续自增,所以我们要创建配置文件去记录使用次数
Ok,我们用键值对的形式保存
package com.lgl.hellojava; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.util.Properties; public class HelloJJAVA { public static void main(String[] args) { try { Properties properties = new Properties(); File file = new File("count.ini"); if (!file.exists()) { file.createNewFile(); } FileInputStream fis = new FileInputStream(file); properties.load(fis); int count = 0; String value = properties.getProperty("time"); if (value != null) { count = Integer.parseInt(value); if (count >= 5) { System.out.println("你余额不足呀!"); } } count++; properties.setProperty("time", count + ""); FileOutputStream fos = new FileOutputStream(file); properties.store(fos, ""); fos.close(); fis.close(); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
我们得到的结果
OK,我们本篇就先到这里,我们下篇在聊

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
JAVA之旅(二十八)——File概述,创建,删除,判断文件存在,创建文件夹,判断是否为文件/文件夹,获取信息,文件列表,文件过滤
JAVA之旅(二十八)——File概述,创建,删除,判断文件存在,创建文件夹,判断是否为文件/文件夹,获取信息,文件列表,文件过滤 我们可以继续了,今天说下File 一.File概述 文件的操作是非常重要的,我们先来看下他的基本概念 用于将文件或者文件夹封装成对象 方便对文件和文件夹的操作 File对象可以作为参数传递给流的构造函数 我们写个小例子先 package com.lgl.hellojava; import java.io.File; public class HelloJJAVA { public static void main(String[] args) { // 创建File对象,不存在也没事 File file = new File("a.txt"); //目录 文件名 File file2 = new File("F:\\isblog\\Demo","a.txt"); //封装什么就打印什么 System.out.println(file); } } 其实就是一个类的使用 二.创建删除 是文件肯定有操作方法 1.创建 2.删除 3.判断 4.获取信息 1.创建 ...
- 下一篇
JAVA之旅(三十)——打印流PrintWriter,合并流,切割文件并且合并,对象的序列化Serializable,管道流,RandomA...
JAVA之旅(三十)——打印流PrintWriter,合并流,切割文件并且合并,对象的序列化Serializable,管道流,RandomAccessFile,IO其他类,字符编码 一.打印流PrintWriter 打印流有PrintWriter和PrintStream,他的特点可以直接操作输入流还有文件 该流提供了打印方法,可以将各种数据类型原样打印 file对象 File 字符串路径 String 字节打印流 字符打印流 我们演示一遍大家就对此有所了解了 package com.lgl.hellojava; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; public class HelloJJAVA { public static void main(String[] args) { try { BufferedReader bufr = new BufferedReader(new In...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Linux系统CentOS6、CentOS7手动修改IP地址
- CentOS关闭SELinux安全模块
- CentOS8安装Docker,最新的服务器搭配容器使用
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- Hadoop3单机部署,实现最简伪集群
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Windows10,CentOS7,CentOS8安装Nodejs环境
- 设置Eclipse缩进为4个空格,增强代码规范