黑马程序员——File类
2015-09-17 20:04
791 查看
------- android培训、java培训、期待与您交流!
----------
File类
用来将文件或文件夹封装成对象。
方便对文件与文件夹的属性信息进行操作。
File对象可以作为参数传递给流的构造函数。
File类的常见方法:
1、创建。
boolean createNewFile():在指定位置创建文件,如果该文件已经存在则不创建,返回false。
和输出流不一样,输出流对象一建立就会创建文件,而且文件已经存在,会覆盖。
boolean mkdir():创建文件夹。
boolean mkdirs();创建多级文件夹。
2、删除。
boolean delete():删除失败返回flase。
void deleteOnExit():在程序退出时删除指定文件。
3、判断。
boolean exists():文件是否存在。
boolean canExcute();文件是否可执行。
boolean isDirectory():是否是文件夹。
boolean isFile():是否是文件。
boolean isHidden():判断是否隐藏。
boolean isAbsolute():是否是绝对路径。文件不存在也可以判断。
记住:在判断文件对象是否是文件夹或者目的时,必须要判断该文件对象封装的内容是否存在。通过exists判断。
4、获取信息。
getName():获取名称。
getPath():获取目录。
getParent():返回的是绝对路径中的父目录。如果获取的是相对路径,返回Null。如果相对路径有上一层目录那么该目录就是返回结果。
getAbsolutePath():获取绝对路径。
long lastModified():获取文件最后一次修改的时间。
long length():获取文件的长度。
boolean renameTo():重命名此抽象路径名表示的文件。
5、目录列表。
File[] listRoots():列出机器里面有效的盘符。
list():打印指定目录的文件及文件夹名称。调用list方法的file对象必须是封装了一个目录。该目录还必须存在。
例:列出指定目录下文件或者文件夹,包含子目录中的内容。
也就是列出指定目录下所有内容。
因为目录中还有目录,只要使用同一个列出目录功能的函数完成即可。
在列出过程中出现的还是目录的话,还可以再次调用功能。
也就是函数自身调用自身。
这种表现形式,或者编程手法,称为递归。
递归要注意:
1、限定条件。
2、要注意递归的次数。尽量避免内存溢出。
递归算法列出指定目录下文件或者文件夹
public static String getLevel(int level)
{
StringBuildersb = new StringBuilder();
sb.append("|--");
for(intx=0;x<level;x++)
{
sb.insert(0," ");
}
returnsb.toString();
}
publicstatic void showDir(File dir,int level)
{
System.out.println(getLevel(level)+dir.getName());
level++;
File[]files = dir.listFiles();
for(intx=0;x<files.length;x++)
{
if(files[x].isDirectory())
showDir(files[x],level);
else
System.out.println(getLevel(level)+files[x]);
}
}
练习:
将一个指定目录下的Java文件的绝对路径,存储到一个文本文件中。
建立一个java文件列表文件。
思路:
1、对指定的目录进行递归。
2、获取递归过程所有的java文件的路径。
3、将这些路径存储到集合中。
4、将集合中的数据写入到一个文件中。
创建Java文件列表。
import java.io.*;
import java.util.*;
class JavaFileList
{
publicstatic void main(String[] args) throws IOException
{
Filedir = new File("E:\\EditPlus");
List<File>list = new ArrayList<File>();
fileToList(dir,list);
Filefile = new File(dir,"javalist.txt");
writeToFile(list,file.toString());
}
publicstatic void fileToList(File dir,List<File> list)
{
File[]files = dir.listFiles();
for(Filefile : files)
{
if(file.isDirectory())
fileToList(file,list);
else
{
if(file.getName().endsWith(".java"))//判断是否为.java文件。
list.add(file);
}
}
}
publicstatic void writeToFile(List<File> list,String javaListFile) throwsIOException
{
BufferedWriterbufw = null;
try
{
bufw= new BufferedWriter(new FileWriter(javaListFile));
for(Filef : list)
{
Stringpath = f.getAbsolutePath();
bufw.write(path);
bufw.newLine();
bufw.flush();
}
}
catch(IOException e)
{
throwe;
}
finally
{
try
{
if(bufw!=null)
bufw.close();
}
catch(IOException e)
{
throwe;
}
}
}
}
Properties类
Properties是hashtable的子类。
也就是说它具备map集合的特点,而且它里面存储的键值对都是字符串。
是集合中的IO技术相结合的集合容器。
该对象的特点:可以用于键值对形式的配置文件。
那么在加载数据时,需要数据有固定格式:键 =
值。
例:用于记录应用程序运行次数。
如果使用次数已到,那么给出注册提示。
思路:
很容易想到的是:计数器。
可是该计数器定义在程序中,随着程序的运行而在内存中存在,并进行了自增。
可是随着该应用程序的退出,该计数器也在内存中消失了。
下一次启动该程序,又重新开始从0计数。
这样不是我们想要的。
程序即使结束,该计数器的值也存在。
下次程序启动会先加载计数器的值并加1后在重新存储起来。
所以要建立一个配置文件,用于记录该软件的使用次数。
该配置文件使用键值对的形式。
这样便于阅读数据,并操作数据。
键值对数据是map集合。
数据是以文件的形式存储,使用IO技术。
那么map加io
——>Properties。
配置文件可以实现应用程序数据的共享。
import java.io.*;
import java.util.*;
class RunCount
{
publicstatic void main(String[] args) throws IOException
{
Propertiesprop = new Properties();
Filefile = new File("count.ini");
if(!file.exists())//判断文件是否存在,不存在新建
file.createNewFile();
FileInputStreamfis = new FileInputStream(file);
prop.load(fis);//把数据加载到集合中
intcount = 0;
Stringvalue = prop.getProperty("time");//第一次获取为空
if(value!= null)
{
count= Integer.parseInt(value);
if(count>= 5)
{
System.out.println("次数已到!");
return;
}
}
count++;
prop.setProperty("time",count+"");
FileOutputStreamfos = new FileOutputStream(file);
prop.store(fos,"");
fis.close();
fos.close();
}
}
------- android培训、java培训、期待与您交流!
----------
File类
用来将文件或文件夹封装成对象。
方便对文件与文件夹的属性信息进行操作。
File对象可以作为参数传递给流的构造函数。
File类的常见方法:
1、创建。
boolean createNewFile():在指定位置创建文件,如果该文件已经存在则不创建,返回false。
和输出流不一样,输出流对象一建立就会创建文件,而且文件已经存在,会覆盖。
boolean mkdir():创建文件夹。
boolean mkdirs();创建多级文件夹。
2、删除。
boolean delete():删除失败返回flase。
void deleteOnExit():在程序退出时删除指定文件。
3、判断。
boolean exists():文件是否存在。
boolean canExcute();文件是否可执行。
boolean isDirectory():是否是文件夹。
boolean isFile():是否是文件。
boolean isHidden():判断是否隐藏。
boolean isAbsolute():是否是绝对路径。文件不存在也可以判断。
记住:在判断文件对象是否是文件夹或者目的时,必须要判断该文件对象封装的内容是否存在。通过exists判断。
4、获取信息。
getName():获取名称。
getPath():获取目录。
getParent():返回的是绝对路径中的父目录。如果获取的是相对路径,返回Null。如果相对路径有上一层目录那么该目录就是返回结果。
getAbsolutePath():获取绝对路径。
long lastModified():获取文件最后一次修改的时间。
long length():获取文件的长度。
boolean renameTo():重命名此抽象路径名表示的文件。
5、目录列表。
File[] listRoots():列出机器里面有效的盘符。
list():打印指定目录的文件及文件夹名称。调用list方法的file对象必须是封装了一个目录。该目录还必须存在。
例:列出指定目录下文件或者文件夹,包含子目录中的内容。
也就是列出指定目录下所有内容。
因为目录中还有目录,只要使用同一个列出目录功能的函数完成即可。
在列出过程中出现的还是目录的话,还可以再次调用功能。
也就是函数自身调用自身。
这种表现形式,或者编程手法,称为递归。
递归要注意:
1、限定条件。
2、要注意递归的次数。尽量避免内存溢出。
递归算法列出指定目录下文件或者文件夹
public static String getLevel(int level)
{
StringBuildersb = new StringBuilder();
sb.append("|--");
for(intx=0;x<level;x++)
{
sb.insert(0," ");
}
returnsb.toString();
}
publicstatic void showDir(File dir,int level)
{
System.out.println(getLevel(level)+dir.getName());
level++;
File[]files = dir.listFiles();
for(intx=0;x<files.length;x++)
{
if(files[x].isDirectory())
showDir(files[x],level);
else
System.out.println(getLevel(level)+files[x]);
}
}
练习:
将一个指定目录下的Java文件的绝对路径,存储到一个文本文件中。
建立一个java文件列表文件。
思路:
1、对指定的目录进行递归。
2、获取递归过程所有的java文件的路径。
3、将这些路径存储到集合中。
4、将集合中的数据写入到一个文件中。
创建Java文件列表。
import java.io.*;
import java.util.*;
class JavaFileList
{
publicstatic void main(String[] args) throws IOException
{
Filedir = new File("E:\\EditPlus");
List<File>list = new ArrayList<File>();
fileToList(dir,list);
Filefile = new File(dir,"javalist.txt");
writeToFile(list,file.toString());
}
publicstatic void fileToList(File dir,List<File> list)
{
File[]files = dir.listFiles();
for(Filefile : files)
{
if(file.isDirectory())
fileToList(file,list);
else
{
if(file.getName().endsWith(".java"))//判断是否为.java文件。
list.add(file);
}
}
}
publicstatic void writeToFile(List<File> list,String javaListFile) throwsIOException
{
BufferedWriterbufw = null;
try
{
bufw= new BufferedWriter(new FileWriter(javaListFile));
for(Filef : list)
{
Stringpath = f.getAbsolutePath();
bufw.write(path);
bufw.newLine();
bufw.flush();
}
}
catch(IOException e)
{
throwe;
}
finally
{
try
{
if(bufw!=null)
bufw.close();
}
catch(IOException e)
{
throwe;
}
}
}
}
Properties类
Properties是hashtable的子类。
也就是说它具备map集合的特点,而且它里面存储的键值对都是字符串。
是集合中的IO技术相结合的集合容器。
该对象的特点:可以用于键值对形式的配置文件。
那么在加载数据时,需要数据有固定格式:键 =
值。
例:用于记录应用程序运行次数。
如果使用次数已到,那么给出注册提示。
思路:
很容易想到的是:计数器。
可是该计数器定义在程序中,随着程序的运行而在内存中存在,并进行了自增。
可是随着该应用程序的退出,该计数器也在内存中消失了。
下一次启动该程序,又重新开始从0计数。
这样不是我们想要的。
程序即使结束,该计数器的值也存在。
下次程序启动会先加载计数器的值并加1后在重新存储起来。
所以要建立一个配置文件,用于记录该软件的使用次数。
该配置文件使用键值对的形式。
这样便于阅读数据,并操作数据。
键值对数据是map集合。
数据是以文件的形式存储,使用IO技术。
那么map加io
——>Properties。
配置文件可以实现应用程序数据的共享。
import java.io.*;
import java.util.*;
class RunCount
{
publicstatic void main(String[] args) throws IOException
{
Propertiesprop = new Properties();
Filefile = new File("count.ini");
if(!file.exists())//判断文件是否存在,不存在新建
file.createNewFile();
FileInputStreamfis = new FileInputStream(file);
prop.load(fis);//把数据加载到集合中
intcount = 0;
Stringvalue = prop.getProperty("time");//第一次获取为空
if(value!= null)
{
count= Integer.parseInt(value);
if(count>= 5)
{
System.out.println("次数已到!");
return;
}
}
count++;
prop.setProperty("time",count+"");
FileOutputStreamfos = new FileOutputStream(file);
prop.store(fos,"");
fis.close();
fos.close();
}
}
相关文章推荐
- IOS:知乎上的一个怎么面试iOS工程师的问题
- Java程序员面试题集
- 黑马程序员——Java简介与安装
- 黑马程序员_关于path和classpath
- 黑马程序员 java枚举使用详解
- 黑马程序员 java反射详解
- 黑马程序员 Java中什么是接口回调?
- 黑马程序员 java多线程总结
- 黑马程序员 JAVA多线程实现的三种方式
- 黑马程序员 JAVA面向对象基础
- 黑马程序员 java 设计模式之 工厂方法
- 黑马程序员 深入理解 Java中的 流 (Stream)
- IT职业道路的苦与甜
- 程序员才能看懂的笑话
- Java线程面试题 Top 50
- Hibernate笔试面试题
- JAVA架构师面试分享—链家网
- 美团面试-2016校园招聘
- 屌丝程序员的爱情
- 一些基础的面试的java知识,普及下。开发和测试都用得到。