黑马程序员_流2(文件)

---------------------- android培训java培训、期待与您交流! ----------------------




1. File类常见方法:

创建

boolean createNewFile():在指定位置创建文件,如果该文件已经存在,则不创建,返回false。和输出流不一样,当输出流对象创建文件时,如果文件已经存在,会覆盖。

static File createTempFile(String prefix, String suffix) 

static File createTempFile(String prefix, String suffix, File directory) 

       在默认临时文件目录中创建一个空文件,使用给定前缀和后缀生成其名称。 

boolean mkdir():创建文件夹。

boolean mkdirs():创建多级文件夹。

删除

boolean delete():  删除失败返回false。如文件正在被使用或文件夹中还有文件(文件夹)时删除失败。

void deleteOnExit();在程序退出时删除指定文件。

判断(判断文件对象是否是文件或者目录时,必须要先判断该文件对象是否存在)

boolean exists() :文件是否存在.

isFile():     判断对象是否是文件

isDirectory();判断对象是否是文件夹

isHidden();判断对象是否是文件夹或文件

isAbsolute();   判断对象是否是绝对路径

获取信息

getName():

getPath():得到相对路径

getAbsolutePath() 得到绝对路径  绝对路径=getName()+getParent()

String getParent():获取文件存放的路径。

File getParentFile()   以File对象方式获取文件存放的路径

long lastModified() 最后一次修改的时间

long length()     返回由此抽象路径名表示的文件的长度。

    String[] list()    返回的数组指定此抽象路径名表示的文件和文件夹。 

 String[] list(FilenameFilter filter) 返回此路径下满足要求的文件和文件夹。

    以下3个方法用法同list()、list(FilenameFilter filter)

 File[] listFiles() 

File[] listFiles(FileFilter filter) 

File[] listFiles(FilenameFilter filter) 

     static File[] listRoots()  列出可用的文件系统根。

         

更名

改名并移动。若f2路径在c盘,则只是改名。

File f1 = new File("c:\\Test.java");

File f2 = new File("d:\\hahah.java");

System.out.println("rename:"+f2.renameTo(f1));

static File[] listRoots()  列出可用的文件系统根,即盘符

此外,File类中还包括一些判断文件是否可读、可写、可执行、File类比较、设置文件读写以及最后一次修改时间等方法。

易错方法演示:

//Demo.java在当前目录下,即D:\\workplace\\java\\Demo.java

 //思考当File f=new File("D:\\workplace\\java\\Demo.java");,输出结果

    File f=new File("Demo.java");

    int i=0;

     System.out.println((++i)+"::"+f.getAbsolutePath());

     System.out.println((++i)+"::"+f.getAbsoluteFile());

    System.out.println((++i)+"::"+f.getName());

    System.out.println((++i)+"::"+f.getParent());

     System.out.println((++i)+"::"+f.getParentFile() );

     System.out.println((++i)+"::"+f.getPath());

输出:1::D:\workplace\java\Demo.java

2::D:\workplace\java\Demo.java

3::Demo.java

4::null

5::null

6::Demo.java

2.示例:

列出c盘所有文件及文件夹(包括隐藏的)

File dir = new File("c:\\");

File[] files = dir.listFiles();

for(File f : files){

System.out.println(f.getName()+"::"+f.length());}

f.length()返回由此抽象路径名表示的文件的长度。

文件过滤

File dir = new File("d:\\java1223\\day18");

String[] arr = dir.list(new FilenameFilter(){

public boolean accept(File dir,String name)

{//dir 要过滤的文件夹,name 要过滤的文件

return name.endsWith(".bmp");}});

3.程序练习:

1)列出某个路径下的全部文件及文件夹。

static void test_1(File f) {

File[] lists = f.listFiles();

for (File str : lists) {

 if(str.isDirectory())

 test_1(str);

 else

System.out.println(str);}}

2)删除某个路径下的全部文件及文件夹。

static void test_2(File f) {

File[] fs=f.listFiles();

for(File nf:fs){

if(nf.isDirectory())

test_2(nf);

else

System.out.println(nf.delete());}

f.delete();}

3)将一个指定目录下的java文件的绝对路径,存储到一个文本文件中。

建立一个java文件列表文件。

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)throws IOException {

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 e;

}finally{

try{

if(bufw!=null)

bufw.close();

}catch (IOException e){

throw e;}}}

1. Properties讲解:

String getProperty(String key)          用指定的键在此属性列表中搜索属性。 

String getProperty(String key, String defaultValue)  

用指定的键在属性列表中搜索属性。如果未找到属性,则此方法返回默认值变量。 

void list(PrintStream out)   将属性列表输出到指定的输出流。 

void list(PrintWriter out)   将属性列表输出到指定的输出流。 

void load(InputStream inStream)   从输入流中读取属性列表(键和元素对)。 

void load(Reader reader) 按简单的面向行的格式从输入字符流中读取属性列表。

Object setProperty(String key, String value) 

返回属性列表中指定键的旧值,如果没有值,则为 null。可以用于修改键的值。

void store(OutputStream out, String comments) 

      以适合使用 load(InputStream) 方法加载到 Properties 表中的格式,将此 Properties 表中的属性列表(键和元素对)写入输出流。 

void store(Writer writer, String comments)   同上

         

void storeToXML(OutputStream os, String comment)    

发出一个表示此表中包含的所有属性的 XML 文档。 

void storeToXML(OutputStream os, String comment, String encoding)   

使用指定的编码发出一个表示此表中包含的所有属性的 XML 文档。  Set<String> stringPropertyNames()    

返回此属性列表中的键集,其中该键及其对应值是字符串.

应用示例:

public static void Test_1() {

Properties p = new Properties();

p.setProperty("zhangshan1", "19");

p.setProperty("zhangshan2", "22");

p.setProperty("zhangshan3", "21");

System.out.println(p);

// 输出:{zhangshan3=21, zhangshan2=22, zhangshan1=19}

System.out.println(p.get("zhangshan1"));// 19

Set<String> names = p.stringPropertyNames();

for (String str : names) {

System.out.print(p.get(str) + " ");// 21 22 19

}

p.setProperty("zhangshan1", "45");// 修改值,返回19

}

public static void Test_2() throws IOException {

BufferedReader bufr = new BufferedReader(new FileReader("info.txt"));//"info.txt"中存放的是键值对

String line = null;

Properties prop = new Properties();

while ((line = bufr.readLine()) != null) {

String[] arr = line.split("=");//按照“=”分割,返回数组

prop.setProperty(arr[0], arr[1]); }

bufr.close();

System.out.println(prop);//{zhangsan=30, lisi=57, wangwu=39}

}

public static void loadDemo()throws IOException{

Properties prop = new Properties();

FileInputStream fis = new FileInputStream("info.txt");

//将流中的数据加载进集合。

prop.load(fis);

prop.setProperty("wangwu","39");

FileOutputStream fos = new FileOutputStream("info.txt");

prop.store(fos,"haha");

prop.list(System.out);

fos.close();

fis.close();}

2. 用Properties编程记录应用程序运行次数。如果使用次数已到,那么给出注册提示。

    public static void test() throws IOException{

     File f=new File("info.ini");

     Properties pro=new Properties();

     if(!f.exists()){

     f.createNewFile();   }

     FileInputStream fis=new FileInputStream(f);

     pro.load(fis);

     int count=Integer.parseInt(pro.getProperty("count","0"));

     if(count>=5){

     System.out.println("使用已经达到5次,给钱");

     return ;  }    

     OutputStream fos=new FileOutputStream(f);

     count++;

     pro.setProperty("count", count+"");

     System.out.println(pro.setProperty("count", count+""));

     pro.store(fos,"hahahah" );

     fos.close();

     fis.close();    }





---------------------- android培训java培训、期待与您交流! ---------------------

详细请查看:http://edu.csdn.net/heima

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值