黑马程序员——24,File类,Properties类,

------<ahref="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------

/*

File类的应用:

针对文件或者文件夹封装成对象进行操作.

*/

import java.io.*;
class Ioliou16
{
         publicstatic void main(String[] args)
         {

              File   f1=new File("f:\\亚马逊\\亚马逊1号.txt");
                   /*
                   将亚马逊1号.txt封装成了对象,
                   这句话既可以对已经存在的文件封装成对象,
                   又可以对还没有存在的文件封装成对象。
        */
                    File f2=new  File("f:\\亚马逊","亚马逊1号.txt");
                    /*
                             这句话效果和前一句一样,
                             只不过,把指定位置和文件分开成两个参数进行传递,更加灵活。
                    */
                    File f3=new  File("f:\\亚马逊");
                    File f4=new  File(f3,"亚马逊1号.txt");
                    soc("f1="+f1);//打印的是f1=f:\亚马逊\亚马逊1号.txt
                    soc("f2="+f2);//打印的是f2=f:\亚马逊\亚马逊1号.txt
                    soc("f3="+f3);//打印的是f3=f:\亚马逊
                    soc("f4="+f4);//打印的是f4=f:\亚马逊\亚马逊1号.txt
                    File f5=new  File("f:\\亚马逊"+File.separator+"亚马逊1号.txt");
                    //File.separator表示仅仅是通用的分隔符
                    soc("f5="+f5);//打印的是f5=f:\亚马逊\亚马逊1号.txt
         }

         public  static void  soc(Object  obj)
         {
             System.out.println(obj);
         }
}

——————分割线——————

/*

File类的方法调用

*/

import java.io.*;
class  Ioliou17
{
         public  static void  main(String[] args) throwsIOException
         {

                    //createNewFileDemo();
                    //deleteDemo();
                   //mkdirsDemo();
                   //isAbsoluteDemo();
                   //renameTo();
                   lastModifiedDemo();
         }
         public  static void  createNewFileDemo()throwsIOException
         {
                        File  f=new File("f:\\mianbao.txt");

                   //以下是在指定路径上创建文件
                    boolean  b  =f.createNewFile();
                    soc(b);
                    /*
                    createNewFile返回的是boolean型,
                    如果在指定路径上创建文件mianbao.txt成功就返回true,否则false
                    注意:如果指定路径下有同名文件就不会创建了返回的也是false
                    还有涉及到IO流的一般都会抛出IO异常,不要忘记这一点。
        如果是这样写的话:
                           File f=new  File("f:\\面包\\mianbao.txt");
                           boolean  b=f.createNewFile();
                    这样是编译显示IO异常,找不到指定路径。
                    (本人电脑f盘此时并没有面包这个文件夹)
                    也就是说路径一定要是真实存在的。
                    */
         }
   public  static  void deleteDemo()throws IOException
         {
              File f=new File("f:\\mianbao.txt");
                    f.createNewFile();//创建文件
                    boolean b= f.delete();
                    soc(b);
                    /*
                    delete方法删除文件,
                    该方法返回的也是boolean型的, 删除成功则是返回true,否则false
                    File类中还有一个方法deleteOnExit
                    如果用在此例中f.deleteOnExit();表示java程序运行结束前删除文件
        */

         }
         public  static void  existsDemo()throws  IOException
         {
              File f=new  File("e:\\JAVAwenjian\\Ioliou17\\Ioliou.17");
                    boolean   b=f.exists();//判断文件是否在指定路径存在
                    soc(b);
         }
         public  static void  mkdirDemo() throws  IOException
         {
              File f=new File("shuei\\klkl");
                    boolean b=    f.mkdir();
                    /*
                    mkdir方法建立一级目录,
                    如果建立指定目录成功返回true否则返回false
                    下面有一种常见情况:
                    一,
          File  f=new  File("f://单");
                      boolean b=f.mkdir();//返也恶意回true
                      也可以指定哪一个盘存放
                    二,
                      File f=new File("shuei//klkl");
                      boolean b=f.mkdir();//返也恶意回false
                      只可以指定建立一级目录
                    */
                    soc(b);
         }
         public  static void  mkdirsDemo()throws  IOException
         {
               File f=new  File("菠菜\\好吃的菠菜\\更好吃的菠菜");
                     boolean b=    f.mkdirs();
                     //mkdirs方法可以建立多级目录
                     soc(b);
                     soc("f.exists()="+f.exists());
                     //exists方法也可以用来判断指定路径下是否存在文件夹

                     File f2=new  File("水果.txt");
                     boolean  b2=f2.mkdirs();//这里建立的是名为“水果.txt”的文件夹!
                     soc(b2);
                     //所以mkdir和mkdirs方法都是建立的是文件夹!
         }
         public  static void  pd()
         {
               File f=new  File("f:\\狂热\\热.txt");
                       boolean b1=     f.isFile();//判断封装的对象是否是文件
                       boolean b2   =   f.isDirectory();//判断封装的对象是否是文件夹(路径)
                     /*
                     此例的情况是在指定路径下没有名为“热”的txt文件,
                     所以,b1和b2都是false
          */
                      soc("b1="+b1+"   b2="+b2);

         }
         public  static void  isAbsoluteDemo()throws  IOException
         {
                File f=new  File("玄幻1\\玄幻小说.txt"); //
                      boolean  b=f.isAbsolute();
                      /*
                      isAbsolute方法判断是否是绝对路径,
                      就算是文件不存在只要是绝对路径就返回true
                      所谓的绝对路径就是从哪一个盘开始写起的才算是绝对路径
                      */
                      soc("b="+b);
                     soc("f.getPath()="+f.getPath());//f.getPath()=玄幻1\玄幻小说.txt
                     soc("f.getParent()="+f.getParent());//f.getParent()=玄幻1
                     // getParent方法返回的是绝对路径的父目录否则返回null

                      soc("f.getAbsolute()="+f.getAbsolutePath());
                      //打印的是f.getAbsolute()=E:\JAVAwenjian\玄幻1\玄幻小说.txt
                      //getAbsolutePath方法返回的是绝对路径
                     soc("f.getName()="+f.getName());//f.getName()=玄幻小说.txt

         }
         public  static void  lastModifiedDemo()
         {
                   File  f=new File("e:\\JAVAwenjian\\Ioliou17.java");
                 long l=   f.lastModified();
                            //lastModified方法返回的是文件最后一次被修改的时间
          soc("f.lastModified()="+f.lastModified());
         }
   public  static  void renameTo()
         {
               File f=new  File("f:\\无标题23copy.png");
                     File f2=new  File("d:\\无标题23copy.png");
                     f.renameTo(f2);
                     //效果是:f盘中的无标题23copy.png被剪切到d盘上

               File f3=new File("f:\\yuyuyu.java");
                     File f4=new File("d:\\shue.java");
                     f3.renameTo(f4);
         //效果是:f盘中的yuyuyu.java剪切到d盘上并更名为shue.java

         }
         public  static void  soc(Object  obj)
         {
              System.out.println(obj);
         }
}

——————分割线——————

/*

File类中方法应用

文件列表

*/

import java.io.*;
class  Ioliou18
{
         public  static void  main(String[] args)
         {
                   listDemo();
       listRootsDemo();
         }
         public  static void  listDemo()
    {
                   soc("以下是listDemo--------");
       File  f=new  File("f:\\yuyuyu.txt");
                   String[]   s= f.list();
                   /*
                   list方法返回的是指定路径下(不能是指定文件)所有的文件名和文件夹名,
                   如果指定的不是路径而是文件,那么会运行空指针异常
        */
                    for(String s2: s)
                   {
                    soc(s2);
                   }
         }
         public  static void  listRootsDemo()
         {
                   soc("以下是listRootsDemo-------");
              File[] f=File.listRoots();
                    for(File f2:f)
                    {
                          soc(f2);
                    }
                    /*
                    打印的是:
以下是listRootsDemo-------
C:D:E:F:G:                    */

         }
         public  static void  soc(Object  obj)
         {
           System.out.println(obj);
         }
}

————————分割线——————

/*
File对象的功能:
文件列表
如果只需要罗列出某个指定路径下的某种类型的文件名,
就要用到FilenameFilter,其作用相当于过滤器,
里面有一个方法boolean  accept(File dir,String  name)
*/
import java.io.*;
class  Ioliou19
{
         public  static void  main(String[]args)throws  IOException
         {
         listDemo(); 

         }
         public  static void  listFilesDemo()
         {
                   soc("以下是listFilesDemo----");
              File  f=new  File("f:\\");
                    File[]  fs=     f.listFiles();
                    for(File  zz:  fs)
                    {
                       soc(zz.getName()+"---"+zz.length());
                             //如果是文件夹的话,打印出来的长度显示为0的
                    }
         }
         public  static void  listDemo()
         {
                   //只是打印出f盘中的所有的.txt文件
                   File  f=new File("f:\\");
                   String[]  s   =f.list( new    FilenameFilter(){
                      public boolean  accept(File  dir,String name)
                      {
                            return name.endsWith(".txt");
                      }
                   });
       for(String   s2:s)
                   {
                       soc(s2);
                   }
         }
         public  static void  soc(Object  obj)
         {
              System.out.println(obj);
         }
}

————————分割线——————

/*
File类的应用:
罗列出指定路径下所有文件。
这个就需要用到递归了,
使用递归的时候要注意限制条件以及递归次数。
*/
import java.io.*;
class Ioliou20
{
         public  static void  main(String[] args)
         {
                   File   f=new File("f:\\技术博客的图片\\");
       method(f)   ;   

         }
         public  static void  method(File   f)
         {
                   soc("这是---"+f);
             File[]   fs=f.listFiles();
                   for(int  x=0;x<fs.length;x++  )
                   {

                            if(fs[x].isDirectory())
                method(fs[x]);
                            /*
                            因为目录中还有目录,
                            所以可以自身调用自身函数,这种编程手法称为递归
                            */
                            else
                        soc(fs[x]); //打印的是绝对路径
                   }
         }
         public  static void  soc(Object  obj)
         {
             System.out.println(obj);
         }
}

————————分割线——————

/*
删除带内容的目录
*/
import java.io.*;
class  Ioliou21
{
         publicstatic void main(String[] args)
         {
                   File    f=new  File("f:\\今天练习\\");
       method(f);

         }
         public  static  void  method(File    f)
         {
             File[]    fs=   f.listFiles();
                   for(int  x=0;x<fs.length;x++)
                   {
                        if(fs[x].isDirectory())
                             {
                                      method(fs[x]);
                                 //soc(fs[x]+"--文件夹--"+fs[x].delete());

                             }
                             else
              soc(fs[x]+"---"+fs[x].delete());

                   }
                   if(f.isDirectory())//这里加上这个判断把外层的文件夹删掉
                            soc(f+"--文件夹--"+f.delete());

         }
         public  static  void   soc(Object  obj)
         {
             System.out.println(obj);
         }
}

——————分割线——————

/*
建立java文件列表
*/
import java.io.*;
import java.util.*;
class  Ioliou22
{
         public  static void  main(String[] args)throws  IOException
         {
                   File  f=new File("f:\\java文件练习");
       List<String>  li=new  ArrayList<String>();
                   File   f2=new File("f:\\2015.8.10.txt");
       method(f, li) ;
                   method2(li,f2);
         }
         public  static void  method(File  f,List<String>  li  )
         {
                    File[] fs     =f.listFiles();
                    for(int x=0;x<fs.length;x++)
                    {
                          if(fs[x].isDirectory())
                                        method(fs[x],li);
                               else
                                       if(fs[x].getName().endsWith(".java"))
                      li.add(fs[x].getAbsolutePath());
                    }

         }
         public  static void method2(List<String>  li,File   f)throws  IOException
         {
          //FileWriter   fw=new   FileWriter(f.getAbsolutePath());
                FileWriter   fw=new  FileWriter(f);
                      //FileWriter构造函数也可以接受File类对象
                      BufferedWriter   bfw=new  BufferedWriter(fw);
                      for(String  s:li)
                      {
                           bfw.write(s);
                                     bfw.newLine();
                                     bfw.flush();
                      }
                      bfw.close();

         }
         public  static void  soc(Object  obj)
         {
              System.out.println(obj);
         }
}

——————分割线——————

/*
IO流(Properties类的介绍)

同时具备Map集合特点,里面存放的都是字符串,没有泛型。
Properties集合是Hashtable集合的子类
Properties集合对象特点:可以用于键值对形式的配置文件,
从文件中把数据加载到容器里面的时候需要固定格式:键=值

f:\\8.10号练习.txt的内容:
bvuivb=8
heauobgvjeb=02   qcdtycwqd=45
buiverhbgvi=09
oirjgbitr=20
hbn=00
iohoii=74
oirjgbitr=55

*/
import java.io.*;
import java.util.*;
class  Ioliou23
{
         public  static void  main(String[] args)throws  IOException
         {

        method3();
         }

         public   static void  method()
         {
                   Properties   pro=new Properties();
                   pro.setProperty("pupi","01");//加入元素
                   pro.setProperty("huj","03");
                   pro.setProperty("hjsbf","12");
                   pro.setProperty("hjsbf","100");//注意有重复元素
                   pro.setProperty("add","10");
                   String   s=  pro.getProperty("hjsbf");//获取键所对应的值
                   soc("s---"+s);
                    Set   jian=   pro.stringPropertyNames();//把所有键放在Set集合里面

                    /*
                    由于Properties具有Map集合的特点,所以,某对键值对重复了,
                    那么新来的重复元素会覆盖前一个。
                 */
         }       

         public   static void  method2()throws  IOException
         {

                     Properties  pro=new  Properties();
                     FileInputStream   fis=new FileInputStream("f:\\8.10号练习.txt");
                     pro.load(fis); //将流的数据加载进集合
                     /*
                        f:\\8.10号练习.txt里面的数据要是以等号为分割符分割开来的
                     */
                    pro.setProperty("kkkkkk","kk");
                     soc(pro);/*
                     程序执行到这一行时,打开“8.10号练习.txt”文件来看,
                     并没有上一行添加进的键值对"kkkkkk","kk"
          */
                     fis.close();
                      /*打印结果:
                      {bvuivb=8, oirjgbitr=55, kkkkkk=kk,heauobgvjeb=02   qcdtycwqd=45,buiverhbgvi=09, iohoii=74, hbn=00}

                      */
         }
         public   static void  method3()throws  IOException
         {
                Properties   pro=new Properties();
                      FileInputStream   fis=new FileInputStream("f:\\8.10号练习.txt");
                      pro.load(fis);//加载文件数据到容器中
          pro.setProperty("kkkkkk","kk");//添加元素到容器中
                      FileOutputStream   fos=new FileOutputStream("f:\\8.10号练习.txt");
                      pro.store(fos,"jk");//把pro容器里面的键值对保存在文件中相当于更新,其中jk仅仅为注释

                      pro.list(System.out);
                      /*
                      这句话把容器pro的内容打印出来,打印的格式:
          -- listing properties --
          bvuivb=8
          oirjgbitr=55
          kkkkkk=kk
          heauobgvjeb=02   qcdtycwqd=45
          buiverhbgvi=09
          hbn=00
          iohoii=74

          */

          fis.close();
                      fos.close();

         }
         public   static void  soc(Object  obj)
         {
             System.out.println(obj);
         }
}

——————分割线————————

/*
Properties的练习:(配置文件的建立和使用)
记录程序运行次数,次数已到就给出注册提示。

Map加IO技术就是Properties
配置文件可以实现应用程序数据的共享。

*/
import java.io.*;
import java.util.*;
class  Ioliou24
{
         public  static void main(String[] args) throws IOException
         {
                   //File   f=new File("f:\\jilu.properties");//一般写后缀名.properties配置文件
       File   f=new  File("f:\\jilu.ini");
                   if(!f.exists())
                            f.createNewFile();

                   FileReader   fis=new  FileReader(f);
                   //建立读取流对象,这里可以用字符流读取流又可以用字节流读取流
                   Properties   pro=new Properties();//建立Properties对象
                   pro.load(fis);//加载文件数据到容器中
                   String   s= pro.getProperty("cishu");//获取值
                   int  i=0;
                   if(s==null)
                   {
              pro.setProperty("cishu","1");       

                  }
                   else
                   {
                       i= Integer.parseInt(s);//把字符串转变成数字
                            i++;
                            if(i>=6)
                                {
                                    soc("次数超过了");
                                }
                       pro.setProperty("cishu",i+"");
                   }

                   FileWriter   fos=new FileWriter(f);
                   //建立写入流对象,这里可以用字符流写入流又可以用字节流写入流
                    pro.store(fos,"haha");//把数据保存在文件中
        fis.close();
                    fos.close();

         }
         public  static void  soc(Object  obj)
         {
             System.out.println(obj) ;
         }
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-14 10:44:39

黑马程序员——24,File类,Properties类,的相关文章

黑马程序员——19,Collections工具类,Arrays工具类,高级for循环,可变参数,静态导入

------<ahref="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------- 黑马程序员--19,Collections工具类,Arrays工具类 /* Collections是一个类,注意,这里后面带有一个s 千万不要和Collection弄混了!Collection只是接口而已. 两者要区别开来. Collect

黑马程序员 ——ios点语法和类的三大特性

@import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css); @import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css); 一.点语法 (一)认识点语法

黑马程序员 - 正则表达式和常用其他类

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 正则表达式: 专门用于操作字符串 特点:用于一些特定的符号来表示一些代码操作,这样就简化了书写 好处:可以简化书写 弊端:阅读性差 具体功能:1.匹配:matches方法 定义字符个数和规则 reg = [字符范围][字符范围](前一个[]的个数范围) 例 String reg = [ab][a-z][0-9]{1-3} \d 数字 表示3~5长度的字符串第一个字符(a或b)第二个(a~z)第

黑马程序员— OC基本语法、类和对象、三大特性

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 第一讲     OC简介及基本语法 Objective-C简称OC是在C语言的基础上,增加了一层最小的面向对象语法,完全兼容C语言,也就是可以在OC代码中混入C语言代码,甚至是C++代码.可以使用OC开发Mac OS X平台和IOS平台的应用程序.简单的介绍了一下OC,下面我们来看看OC的基本语法,学习OC之前我们先学习了C语言,因为OC是在C语言的基础上的一门开发语言,因此OC的很多基本语法

黑马程序员--Foundation框架之--NSArray类以及它的子类NSMutableArray类

今天我们继续来看一下Foundation框架中的NSArray类和 NSMutableArray类,NSArray类 是不可变的,NSMutableArray类是可变的. 一.NSArray类 NSArray中不可以存放基本数据类型,只能存放类的实例,如果需要将基本类型.结构体放入到数组中得话,需要通过NSNumber/NSValue进行数据的封装 同时不能在NSArray中存储nil // // main.m // 16_NSArray // // Created by waterfoxjie

【黑马程序员】OC基本语法——类与对象相关概念

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 最近在学OC的面向对象部分,可能是因为以前学Java和PHP时习惯了主流的面向对象思想,接触到OC的面向对象有很多说法都不习惯,查了很多东西,终于基本都搞清楚了,在这里小结一下. 一.类和对象 1.类:类是一个抽象概念,代表着一类事物,如:人,动物,交通工具等:这个和Java或PHP里类的概念没有区别. 其定义方法如下: @interface Student : NSObject { NSSt

黑马程序员——Java基础---反射Class类、Constructor类、Field类

------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------- 反射的应用场景 一.概述 反射技术: Java反射机制是在运行状态中,对于任意一个类,都能够知道这个类中的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性:这种动态获取的信息以及动态调用对象的方法的功能称为java语言的

黑马程序员--java基础之其他类

-------android培训.java培训.期待与您交流! ---------- Java基础中的其他对象:System 关于System类的用法: /* System:类中的方法和属性都是静态的 out:标准输出,默认是控制台 in:标准输入,默认是键盘 获取系统属性信息:Properties getProperties(); */ import java.util.*; class SystemDemo { public static void main(String[] args) {

黑马程序员--Foundation框架之--NSObject类

OC中的Foundation框架是系统提供的,他就相当于是系统的一套api,其内部有很多现有的类和功能提供给我们使用. 那么今天首先来介绍一下Foundation框架中的第一个类NSObject. // // Person.h // 13_NSObjectMethod // // Created by waterfoxjie 15-03-31. // Copyright (c) 2015年 waterfoxjie. All rights reserved. // #import <Foundat