File:
将文件或者文件夹封装成了对象。
可用于操作文件的属性信息。
File并不是流对象,流只用来操作数据,File用来操作文件信息。
createNewFile(): 创建文件,如果指定目录下已有要创建文件,那么不进行覆盖,
可通过该方法的返回值来确定是否创建成功。
输出流也可以创建文件,但是如果文件已存在,会出现覆盖。
mkdir():创建单级目录。
mkdirs():创建多级目录。
exsits(),判断文件或者文件夹是否存在。
isFile():在判断一个文件对象封装的是否是文件或者文件夹,必须要先明确该文件是存在的。
isDirectory():
getName();
getAbsolutePath();
getPath();
length();
static File[] listRoots():列出当前机器有效的盘符。
String[] list():获取指定目录的当前所有文件或者文件夹的名称。
String[] list(FilenameFilter filter):可以通过指定的条件对数据进行过滤。
File[] listFiles():返回的是当前目录下所有文件或者文件夹对应的file对象。
跨平台的目录分隔符:separator File f = new File("c:"+File.separator+"a.txt");
------------------------------
需求:获取指定目录下所有的文件和文件夹,包括子文件夹中的文件。
递归:就是函数自身调用自身,
注意:一定要限定条件以及控制一下调用次数,以免出现内存溢出。
功能在被重复使用,但是操作的未知 内容不同,可以使用递归这种手法。
public static void listAll(File dir)
{
System.out.println(dir.getName());
File[] files = dir.listFiles();
for(int x=0;x <files.length; x++)
{
if(files[x].isDirectory())
listAll(files[x]);
else
System.out.println(files[x].getName());
}
}
需求:删除一个带内容的目录。
按照windows的特点,必须从里往外删。
public static void listAll(File dir)
{
File[] files = dir.listFiles();
for(int x=0;x <files.length; x++)
{
if(files[x].isDirectory())
listAll(files[x]);
else
files[x].delete();
}
dir.delete();
}
----------------------------------
是集合中HashTable的子类对象。
该容器的特点:存储的键值都是字符串。是一个可以集合和流相结合的容器。
特有方法:
list(PrintStream):集合中的数据展现到指定的目的。
load(InputStream):可以加载流关联的特定规则数据进集合。
store(OutputStream,String):将集合的数据存储到流所关联的文件中。
需求:记录每一次程序的运行次数。
思路:程序在退出后,下次启动就可以明确使用的次数,那么就一定需要一个配置文件。
在每一次程序启动时都需要加载的。
(另软件的个性化设置同理。)
而配置文件中,需要使用键值对来明确数据信息。
public void runCount()
{
Properties prop = new Properties();
File file = new File("count.ini");
if(!file.exists())
file.createNewFile();
FileInputStream fis = new FileInputStream(file);
prop.load(fis);
int count = 0;
String value = prop.getProperty("count");
if(value!=null)
{
count = Integer.parseInt(value);
if(count==10)
{
System.out.println("次数已到");
return ;
}
}
count++;
prop.setProperty("count",count+"");
FileOutputStream fos = new FileOutputStream(file);
prop.store(fos,"");
fos.close();
fis.close();
}