day20File类,文件列表文件,properties

来源:互联网 发布:手机撩妹软件 编辑:程序博客网 时间:2024/06/03 22:54
import java.io.*;
/*
file类常见方法
1.创建
boolean createNewFile();
在指定位置创建文件,如果该文件已经存在,则不创建,返回false
和输出流不一样,输出流对象一创建文件,而且文件已经存在,会覆盖

boolean mkdir():创建目录
boolean mkdirs():创建多级目录
2.删除
boolean delete();删除失败,返回false
void deleteOnExit();在程序退出时,删除指定文件
3.判断
canExecute();可执行
canRead()
canWrite()
compareTo()

boolean exists():文件是否存在
isFile()是否是文件
isDirectory()是否是目录
isHidden()是否是隐藏
isAbsolute()是否是绝对
4.获取信息
getName() 
getPath()
getParent()

getAbsolutePath()绝对路径
long lastModified()最后一次修改时间
long length()文件长度
*/
class FileDemo 
{
public static void main(String[] args) throws IOException
{
method_5();
}
public static void method_5()throws IOException
{
File f1=new File("c:\\file.txt");
File f2=new File("d:\\haha.txt");
sop("rename:"+f1.renameTo(f2));
}

public static void method_4()throws IOException
{
File f=new File("file.txt");//c:\\abd\\file.txt
sop("path:"+f.getPath());
sop("getAbsolutePath:"+f.getAbsolutePath());
sop("getParent:"+f.getParent());
//该方法返回的是绝对路径的父目录,如果获取的是相对路径,返回null
//如果相对路径有上层目录,返回上层
}
public static void method_3()throws IOException
{
File f=new File("file.txt");
//f.createNewFile();
f.mkdir();
//记住在判断文件对象是否是文件和目录,必须先判定该文件对象封装的内容是否存在
//通过exists判断
sop("dir:"+dir.isDirectory());
sop("file:"+dir.idFile());
}
public static void method_2()throws IOException
{
File f=new File("file.txt");
//sop("execute:"+f.canExecute());
sop("exists:"+f.exists());

//创建文件夹
File dir=new File("abc");
sop("mkdir:"+dir.mkdir());
}
public static void method_1()throws IOException
{
File f=new File("file.txt");
f.deleteOnExit();
code();
//sop("create:"+f.createNewFile());
Sop("delete:"+f.delete());
}

//创建File对象
public static void consMethod()
{
//将a.txt封装成file对象,可以将已有的和未出现的文件或者文件夹封装成对象
File f1=new File("c:\\abc\\a.txt");
//
File f2=new File("c:\\abc","b.txt");
File d=new File("c:\\abc");
File f3=new File(d,"c.txt");

sop("f1:"+f1);
sop("f1:"+f1);
sop("f1:"+f1);

File f4=new File("c:"+File.separator+"abc"+File.separator+"zzz"+File.separator+"a.txt");
}
public static void sop(Object obj)
{
System.out.println(obj);
}

}

----------------------------------------

class  FileDemo2
{
public static void main(String[] args) 
{
File dir=new File("c:\\");
File[] files=dir.listFiles();

for (File f:files)
{
sop(f.getName()+"::"+f.length());
}
}
public static void listDemo_2()
{
File dir=new File("d:\\Java0217\\day18");

String[] arr=dir.list(new FilenameFilter()
{
public boolean accept(File dir,String name)
{
return name.endsWith(".bmp");
}
});
for(String name:arr)
{
sop(name);
}
}
public static void listDemo()
{
File f=new File("c:\\");

String[] names=f.list();//调用lise方法的file对象必须是封装一个目录,该目录还必须存在
for(String name:names)
{
sop(name);
}
}
public static void listRootsDemo()
{
File[] files=File.listRoots();
for(File f:files)
{
sop(f);
}
}
public static void sop(Object obj)
{
System.out.println(obj);
}
}

---------------------------------------------------------

/*
列出指定目录下的文件或者文件夹,包含子目录
就是列车指定目录下所有的内容。

因为目录中还有目录,只要使用同一个列出目录的函数完成即可
在列出过程中出现的还是目录的话,还可以再次调用本功能
函数自身调用自身
这种表现形式,或者编程手法,称为递归

递归注意
1.限定条件

2.要注意递归的次数,尽量避免内存溢出
*/
import java.io.*;
class FileDemo3 
{
public static void main(String[] args) 
{
File dir=new File("d:\\java0217");
showDir(dir);

int n=getSum(10);
System.out.println("n="+n);
}
public static void getSum(int n)
{
if(n==1)
return 1;
return n+getSum(n-1);
}
public static void toBin(int num)
{
if (num>0)
{
toBin(num/2);
System.out.println(num%2);
}
}

public static void showDir(File dir)
{
System.out.println(dir);
File[] files=dir.listFiles();
for (int x=0;x<files.length ;x++ )
{
if (files[x].isDirectory())
showDir(files[x]);
else
System.out.println(files[x]);
}
}
}

------------------------------------------

/*
练习
将一个指定目录的java文件的绝对路径,存储到一个文本文件中
建立一个java文件列表文件

思路
1.对指定目录进行递归。
2.获取递归过程绝对路径
3.将这些路径存储到集合中
4.将集合数据写入到一个文件

*/
import java.util.*;
import java.io.*;
class JavaFileList 
{
public static void main(String[] args) throws IOException
{
File dir=new File("d:\\java0217");
List<File> list=new ArrayList<File>();
fileToList(dir,list);
//System.out.println(list.size());

File file=new File(dir,"javalist.txt");
writeToFile(list,file.toString());
}
public static void fileToList(File dir,List<File> list)
{
File[] files=dir.listFiles();
for(File file:files)
{
if(file.isDirectory())
fileToList(file,list);
else
{
if(file.getName().endsWith(".java"))
list.add(file);
}
}
}
public static void writeToFile(List<File> list,String javaListFile)
{
BufferedWriter bufw=null;
try
{
bufw=new BufferedWriter(new FileWriter(javaListFile))

for (File f:list )
{
String path=f.getAbsolutePath();
bufw.Write(path);
bufw.newLine();
bufw.flush();
}
}
catch (IOException e)
{
throw new RuntimeException("");
}
finally
{
try
{
if (bufw!=null)
{
bufw.close();
}
}
catch (IOException e)
{
throw e;
}
}
}
}

---------------------------------------------------

/*
properties是hashtable的子类
就是说它具备map集合的特性。而且它里面存储的键值对都是字符串
是集合与IO技术相结合的集合容器
该对象的特点,可以用于键值对形式的配置文件
在加载数据时,需要固定格式:键=值

*/
import java.util.*;
import java.io.*;
class  PorpertiesDemo
{
public static void main(String[] args) throws IOException
{
loadDemo();
}
public static void loadDemo()
{
FileInputStream fis=new FileInputStream("info.txt")'
Properties prop=new Properties();
//将流中的数据加载集合
prop.load(fis);
prop.setProperties("wangwu","39");
FileOutputStream fos=new FileOutputStream("info.txt");
prop.store(fos,"xiugai")
//System.out.println(prop);
//prop.list(System.out);
}
//演示,如何将流中的数据存储到集合中
//想要将info.txt中的键值数据存储到集合当中
/*
1.用一个流和info.txt文件关联
2.读取一行数据,将改行数据用“=”切割
3.等号左边作为键,右边作为值,存入到ProperTies集合中
*/
public static void method_1()throws IOException
{
BufferedReader bufr=new BufferedReader(new FileReader("info.txt"));
String line=null;
Properties prop=new Properties();
while ((line=bufr.readLine())!=null)
{
String[] arr=line.split("=");
//System.out.println(srr[0]+"...."+arr[1]);
prop.setProperty(arr[0],arr[1]);
}
bufr.close();
System.out.println(prop);
}
//设置和获取元素
public static void setAndGet()
{
Properties prop=new Properties();
prop.setProperty("zhangsan","30");
prop.setProperty("lisi","39");
//System.out.println(prop);
String value=prop.getProperty("lisi");
//System.out.println(value);
prop.setPorperty("lisi"+"89"+" ");

Set<String> names=prop.stringPropertyName();
for(String name:names)
{
String value=prop.getProperty(name);
System.out.println(name+":"+value);
}
}
}

----------------------------------------

0 0