黑马程序员java学习—File类,Properties类和递归思想
来源:互联网 发布:深圳云和数据是培训吗 编辑:程序博客网 时间:2024/06/05 07:32
一、File类:
专门用于描述系统中文件或者文件夹的对象。
可以用于操作文件或者文件夹的属性信息。
1,获取文件信息。
获取名称,
获取路径。
获取大小。
获取时间。
...
2,判断。
是只读的不?
是隐藏的不?
3,文件的创建和删除以及该文件是否存在,文件对象自己最清楚。
具体创建,删除,是否存在等功能。
File中构造时,指定的路径可以是存在的,也可以是不存在的。
//将c盘下的demo.txt封装成file对象。
File f1 = new File("c:\\demo.txt");
//将c盘下的abc文件夹封装成file对象。
File f2 = new File("c:\\abc");
File f5 = new File("c:\\abc\\ahha\\a.txt");//windows上使用。
File f6 = new File("c:"+ File.separator+"abc"+ File.separator+"ahha"+ File.separator+"a.txt");//可以在任何平台都可以使用。 File.separator是名称分隔符,在windows系统上是双反斜杠\\
二、file类方法
1、获取名称
File file = new File("abc");
String name = file.getName();//获取名称
String absPath = file.getAbsolutePath();//获取绝对路径。无论file中封 装的是什么,获取到的都是绝对的。全路径。
String path = file.getPath();//获取路径。获取的是file中封装的内容。
String dir = file.getParent();//获取父目录。
2、大小
long len = file.length();
long len2 = file.getTotalSpace();//获取文件所在盘符的空间大小
3、获取最后一次修改的时间
long time = file.lastModified();
//为了知道具体的时间,需要进行转换。
//将time毫秒值转成Date对象。
//对Date对象进行格式化。
Date d = new Date(time);
DateFormat format = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG);
String str_time = format.format(d);
System.out.println(str_time);
4、判断
isHidden()是不是隐藏的
isDirectory()是不是一个目录
5、创建和删除文件和文件夹
对于文件的创建和删除
//1.创建
File file = new File("c:\\2.txt");
boolean b = file.createNewFile();
如果文件不存在,就创建。如果文件存在,就不创建。输出流流会覆盖,如果不覆盖,需要在构造函数中加入true参数。续写。
//2.删除。
boolean b = file.delete();
//3.判断是否存在。
boolean b = file.exists();
对于文件夹的创建和删除
//1.创建一级文件夹
File dir = new File("c:\\abc");
boolean b = dir.mkdir();
//2.创建多级文件夹
File dir = new File("c:\\abc\\a\\b\\c");
boolean b = dir.mkdirs();
//3.删除文件夹
boolean b = dir.delete();//从里往外删,删完内容才能删目录
if(file.exists() && file.isFile())// 要判断file中封装的是文件还是目录必须有前提,必须存在。用exists进行判断。
6、虚拟机退出时再删除deleteOnExit()
File f1 = new File("c:\\haha.jpg");
file.deleteOnExit();//虚拟机退出时会自动删除f1文件,因为流对象正在操作这个文件。
file.delete();//此时就会发生了异常
7、对文件进行重命名
File f1 = new File("c:\\haha.jpg");
File f2 = new File("d:\\xixi.jpg");
f1.renameTo(f2);//将haha.jpg更名为xixi.jpg并从c盘移到d盘。 有一个剪切动作。
8、列出根目录 系统的盘符
File[] roots = File.listRoots();//列出系统根
for(File root : roots){
System.out.println(root);
}//对盘符进行遍历
三、递归思想
递归就是函数自身调用自身(直接或者间接)
1,一定要定义条件。 否则就是StackOverflowError栈内存溢出
2,一定要注意递归次数。不宜过多,否则也会栈内存溢出
什么时候用递归呢?
当一个功能被复用,每次这个功能需要的参数都是根据上一次该功能的元素得出的。
练习:删除一个带内容的文件夹。
思路:
1,删除一个带内容的目录,必须按照window的规则,从里往外删。
2,要删除最里面,如果做到的呢?可以使用递归。
import java.io.*;class RemoveDir{public static void main(String[] args) {File dir = new File("d:\\testdir");removeDir(dir);}public static void removeDir(File dir){File[] files = dir.listFiles();for(int x=0; x<files.length; x++){if(files[x].isDirectory())removeDir(files[x]);elseSystem.out.println(files[x].toString()+":-file-:"+files[x].delete());}System.out.println(dir+"::dir::"+dir.delete());}}
四、properties类(重要)
Properties:
1, Map接口中Hashtable的子类。
2, 该类上没有泛型定义,因为它的键值都是固定的字符串类型。
3, 因为存储都是字符串数据,通常都作为属性信息存在。
4, 该集合最大的特点就是可以和IO技术相结合。也就是,该集合中的数据可以来自于流。也可以将集合中的数据写入到流中。
对Properties集合最基本演示。
public static void methodDemo_1(){
Properties prop = new Properties();//创建Properties集合对象。
prop.setProperty("wangwu", "28");
prop.setProperty("zhangsan", "20");
prop.setProperty("lisi", "34");//存储元素。
Set<String> nameSet = prop.stringPropertyNames();//取元素。所有。
for(String name : nameSet){
String value = prop.getProperty(name);
System.out.println(name+":"+value);
}
}
//使用list方法将集合中的数据指定目的地。如指定目的地是显示器System.out
prop.list(System.out);//一般用于调试。
下面的方法很重要 开发时常用到
public static void methodDemo_3() throws IOException {
Properties prop = new Properties(); //集合
FileInputStream fis = new FileInputStream("info.txt");//输入流
prop.load(fis); //将流中的数据存储到集合中。 使用集合的load方法。
prop.setProperty("wangcai", "37");//想要对数据做修改。,其实是对文件中的键值对进行覆盖。
FileOutputStream fos = new FileOutputStream("info.txt");//新创该文件对其覆盖。
prop.store(fos, "haha");//想要将修改的数据保存到文件中,使用store方法。haha部分是描述部分.
fos.close();
fis.close();
prop.list(System.out);
}
五、对properties类的操作练习
练习:定义一个功能用于记录住软件运行的次数,如果运行次数大于5次。不要在运行
并给出提示:试用次数已到,请注册!给钱!
思路:
1,计数器。而且这个计数器必须软件运行结束后,持久化存储。
2,每次软件启动都要读取这个记录了计数器的数据的文件。并将计数器的值取出自增后,在重新存储。
3,数值需要名称标记,就有了键值对。这就是map集合,还要操作硬盘设备上的数据,就使用到了IO流。
map和io结合的对象正好有Properties.
代码如下:
import java.io.*;import java.util.*;class RunCount{public static void main(String[] args) throws IOException{Properties prop = new Properties();File file = new File("count.ini");if(!file.exists())file.createNewFile();//确认配置文件的存在以便读入流FileInputStream fis = new FileInputStream(file);prop.load(fis);//将流中的数据加载到prop中。int count = 0;//定义计数器String value = prop.getProperty("time");//将具体的键和次数存储到集合中。if(value!=null){count = Integer.parseInt(value);if(count>=5){System.out.println("您好,使用次数已到,拿钱!");return ;}}count++;prop.setProperty("time",count+"");FileOutputStream fos = new FileOutputStream(file);//将集合中的数据写入到文件中持久化。prop.store(fos,"");fos.close();fis.close();}}
- 黑马程序员java学习—File类,Properties类和递归思想
- 黑马程序员_学习笔记第20天——File类、递归、Properties、打印流
- 黑马程序员_学习笔记第19天——File类、递归、Properties、打印流
- 黑马程序员——Java中File类笔记,涉及递归思想、过滤器
- 黑马程序员——40,File类和Properties类
- 【黑马程序员】Java基础09:File类和递归
- 黑马程序员---Java基础---异常、File类和递归
- 黑马程序员: File类、递归的学习
- 黑马程序员——IO流之File类、递归、Properties类
- 黑马程序员————java基础--------IO输入输出之异常、File类和递归
- 黑马程序员_day24_File类、过滤器和递归、properties类
- 黑马程序员--15--File类与properties
- 黑马程序员——24,File类,Properties类,
- 黑马程序员——File类及Properties类
- 黑马程序员--Java基础学习(IO流--File对象和Properties)第二十天
- 黑马程序员——Java基础---IO流(File类、Properties类、其他流)
- 黑马程序员——Java基础——File、Properties类、 打印流、序列流
- 黑马程序员——Java基础——File、Properties类
- alter system/session set events相关知识
- Hadoop:The Definitive Guid 总结 Chapter 1~2 初识Hadoop、MapReduce
- hadoop hdfs java api 文件操作类
- Log4J的配置文件详解[转]
- Hadoop:The Definitive Guid 总结 Chapter 3 Hadoop分布式文件系统
- 黑马程序员java学习—File类,Properties类和递归思想
- Hadoop:The Definitive Guid 总结 Chapter 4 Hadoop I/O
- Hadoop:The Definitive Guid 总结 Chapter 5 MapReduce应用开发
- Django基础+优化
- 转:Eclipse SVN插件
- 黑马程序员-面试题之交通灯
- Python修改Excel文件
- Linux seq用法详解
- mysql常用命令总结