java中级-6-IO流开篇基础API


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


 


         API  全称为Application Program Interface。为了便于随后的总结部分便于说明,我下将几个常用的类,在此处做一个方法总结。 


java.lang.Object下的java.lang.System:

         主要注意其中的一些用法:

         getProperties( ),该方法用于获取系统的属性信息,返回值类型为Properties。

         getProperty( Stringkey),返回关键字key对应属性值;

         setProperty(Stringkey, String value):用于设置对应键所代表的属性信息,返回该值对应的以前值。我们也可以在程序运行阶段,通过:java -D< > =< > 程序名,这样的方式来动态的在程序启动jvm时,加载属性信息。如:java-D myproperty = 32 MyTest

         Properties类中的list(PrintStream out)方法能够实现对所有属性的输出,也可以通过load(InputStream in)来从输入流中载入属性信息。计算机每次启动的时候都会获得系统的属性信息。一般的,想要获取Properties类中所有属性的姓名,我们常常采用stringPropertyNames( )方法,来获得属性姓名的一个Set类集合对象。如果想将程序临时设定的一些参数存储到文件夹中,我们就调用store( OutputStream out,String  comments)方法。

         在Properties类读取外部配置的时候,我们的外部配置文档中,所有带"#"字样的都是注释字段,在加载配置参数的时候,不会被加载。


 java.lang.Object下的java.lang.Runtime

        该类是一个典型的单例程序设计思想的体现,其类中提供了获取内部实例化的本类对象的方法getRuntime( )。同时,Runtime类还提供exec(String cmd),用来执行cmd对应的命令行命令。exec方法在执行结束后返回的返回值为一个Process类对象,但我们查看Process类对象的声明,我们发现,该类为一个抽象类,而且没有子类对象。产生这种情况的原因,我们不妨从程序的实现上来寻找。根据计算机组成原理,我们了解到,对应的进程,实质上只起到占用资源的作用,而实质上被OS调用并由计算机执行,可以说是由线程来完成的。因此,进程是由底层实现了其各方面任务的,而不需要子类对象。但是,值得注意的是,该类中的destory方法,它能够杀死所有的对应进程的子进程。另一个比较重要的是exitValue方法,这个方法能够返回对应进程的出口值。

         class  RuntimeTest
         {
                public static void main(String[] args)throws Exception
                {
                       Runtime r = runtime.getRuntime();
                       r.exec("c:\\WINDOWS\\register.exe");//出现问题则抛出IOException
                       Process p =r.exec("notepad.exe Runtime.java"); //通过记事本显示本程序
                       Thread.sleep(10000);
                       p.destory();
                }
         }
 

java.lang.Object下的java.util.Date

         该类用于提供和时间有关的操作,以及创建对象。JDK1.5后,提供以下几个方法

         after(Date when), 测试此日期是否在指定日期之后。

         before(Date when), 测试此日期是否在指定日期之前。

         clone(), 返回此对象的副本。

         compareTo(Date anotherDate) ,比较两个日期的顺序。

         equals(Object obj),比较两个日期的相等性。

         setTime(long time) ,设置此 Date 对象,以表示1970 年 1 月 1 日00:00:00 GMT 以              后 time 毫秒的时间点。

         toString() 把此 Date 对象转换为以下形式的 String:dow mon dd hh:mm:ss zzz yyyy 其               中: dow 是一周中的某一天(Sun, Mon, Tue, Wed, Thu, Fri, Sat)。

         该类的日期格式主要是由java.text下的DateFormat的子类SimpleDateFormat类来规定,并且,日期都实现了本地化(对Windows来说),我们来看下例中的应用:

import java.util.*;
class  DateTest
{
       public static void main(String[] args)
       {
              Date date = new Date();
              System.out.println(date);
             
              SimpleDateFormat dateForm = newSimpleDateFormat("yy-MM-dd");
              String time = dateForm.format(date);//通过format格式化指定时间对象,并返回
              System.out.println("今日:"time);
       }
}


java.lang.Object下的java.util.Calendar

         该类主要实现对时间的瞬时操作。常用的有:

         getInsatnce( ),获取当前系统的时间实例。

         get( int field),返回给定的字段值,返回值为int型。

         add( int field, intamount),将时间的对应字段加上amount的值。注意,时间是连续的。

         set( year, mouth, day),将调用它的Calendar时间对象设为对应值。

  

java.lang.Object下的java.lang.Math

         该类主要包含用于执行基本数学运算的方法。常用的有:

         abs(double a) ,返回 double 值的绝对值,其他数据类同理。

         max(double a,double b) ,返回两个 double 值中较大的一个,其他数据类同理。

         log(double a) ,返回 double 值的自然对数(底数是 e)。

         random() ,返回带正号的 double 值,该值大于等于 0.0 且小于1.0。

         ceil(double a) ,返回大于等于参数的最小整数。

         floor(double a) ,返回小于等于参数的最大整数。

         round(double a) ,将对应数,四舍五入。

         pow(double a,double b) ,这即是a的b次方。

         和各种三角函数,对数,以及开根号等方法。了解即可。该类,是一个纯工具类。没有暴露它的构造函数,且无法被其他类继承,所有的函数均为静态。

         注意其中的随机数,该算法生成的随机数是一个伪随机数,这就是说,其生成的数,本质上是由算法来实现的。java.lang.Object包中还提供了java.util.Random。该类即是随机类,主要包含了各种和随机数有关的操作方法。下面就是一个该类的简单用法

import java.util.*;
class  RandomTest
{
       public static void main(String[] args)
       {
              Random r = new Random();         //创建随机类对象
              System.out.println(r.nextInt(10));        //随机生成一个0-9之间的随机数
       }
}


File文件类

         在总结java对I/O的控制之前,我们首先来看一下I/O操作中最为常见的被操作对象,文件File类,以及它的方法。

         Java当中对文件和文件夹进行描述,用于操作文件和文件夹的属性信息,以及创建对象的类,就是File文件类。他的出现,弥补了流只能操作数据而不能操作文件的特点。对于指定文件目录,File有以下三种常用方法:

File f = new File( URIuri)
File f = new File("D:\\op\\test.txt")  //如目录是相对路径则打印时就是相对的,对应而来
File f = new File("D:\\op", "test.txt")

         最后的这种调用方法,相当于以下两句的糅合:

File dir = new File("D:\\op")
File f = new File( dir,"test.txt")

         因为目录的分隔符,对于不同的操作系统而言,有可能是不同的。所以,为了提高程序的兼容性,File中提供静态字段separator,来代替分隔符调用。具体格式:     

File f = new File("D:"+File.separator+"op"+File.separator+"test.txt")

         一般的,为了描述一个文件,我们常用的概念有:增(创建)、删(删除)、改(重命名)查(判断、获取信息)。注意,带点的如"123.java"不一定是文件,他也可以是文件夹(·,·):

         增:boolean mkdir( ):在掉用它的File对象指定的位置上创建文件夹,只能创建一级目录;

    boolean mkdirs( ):在指定位置创建多级目录文件夹;

    boolean creatNewFile():在指定目录创建文件,如果存在,则返回false,如果采用输出流,则输出流创建文件实在初始化时一起进行的,且输出流创建文                  件,将会覆盖原同名文件。因此,属于对文件的粗略操作。

    static File createTempFile(String prefix, String suffix):在默认临时文件目录中创建一个空文件,使用给定前缀和后缀生成其名称,同时将该文件以File类形式              返回。

    static File createTempFile(String prefix, String suffix, File dir):这是上面临时文件创建方法的变体,在指定的dir目录下创建临时文件。

         删:boolean delete( ):删除调用该方法的文件;

    void deleteOnExit( ):在程序结束时,删除调用该方法的文件,常用于临时文件。不论是否抛出IOException。

         改:boolean renameTo( File dest):重命名调用该方法的对象至指定dest目录位置,内容不变;

         判断:boolean canExecute( ):判断对应路径下的文件(即,调用方法的对象)是否可执行;

    boolean exists( ):判断对应调用该方法的文件是否存在;

    boolean isDirectory( ):判断调用对象是否为目录文件夹,判断前需先判断是否存在;

    boolean isFile( ):判断调用对象是否为文件,判断前需先判断是否存在exists( );

    boolean isHidden( ):判断调用对象是否隐藏,Java无法访问隐藏文件;

    boolean isAbsolute( ):判断是否为绝对路径,是则返回ture;

         获取:getName( ):

    getPath( ):获取路径,即调用对象指定其位置的路径指向,相对、绝对格式不变;

    getParent( ):获取调用方法的对象的父目录,如果定义File对象时没用绝对路径,则返        回值为定义中的上一级目录位置,如果没有上级目录,则返回值为空null;

    File getAbsoluteFile():以File形式返回调用方法的对象的绝对路径;

    StringgetAbsolutePath( ):以String形式返回调用方法的对象的绝对路径;

    long lastModify( ):判断文件最后修改时间(毫秒)

    long length( ):返回文件大小;

    static File listRoots():返回可用盘符;

    String[] list( ):返回调用该方法的对象的当前目录下的所有文件,包含隐藏文件。调用该方法的对象,其内部封装的必须是一个存在的目录,其他情况均发生空指针异常;

                 String[] list(FilenameFilter filter):返回通过filter过滤器过滤过的对应目录下文件;

         这个方法调用了文件名过滤器,这个过滤器是由我们来定义的,并实现了FilenameFilter文件过滤器接口。FilenameFilter类当中,我们可以发现其中只有一个方法声明accept。这个方法的格式是booleanaccept( File dir, String name ),主要的作用是用于判断,对应的目录下的文件,它们的文件名中是否包含name所指定的字符串,如包含则返回ture。

         我们自己定义的文件名过滤器中,需要实现该方法,借此,实现文件过滤。

       package org.exam5a;  
         import java.io.File;  
         import java.io.FilenameFilter;  

         public class filterDemo 
         {  
                 public static void main(String[] args)throws Exception 
                {      File f = new File("d:\doc\");  //定义目录位置
                       MyFilter filter = new MyFilter(".java");   //初始化文件过滤器,筛选后缀为".java"的文件
                       String[] files = f.list(filter); //将过滤后的文件输出到String数组中 
                       //依次输出过滤后的文件名
                       for(String a:files)
                       {      System.out.println(a);  
                       } 
                }
 
		//建立文件名过滤器,继承FilenameFilter以实现过滤
                 static class MyFilter implements FilenameFilter
                {      private String type; 
                       //文件过滤器构造函数传参,type为筛选的内容
                       public MyFilter(String type)
                       {      this.type = type; 
                       } 
 
                       //覆盖FilenameFilter的accept方法,以实现文件名过滤
                       public boolean accept(File dir,String name)
                       {      return name.endsWith(type);   //当含有type字段的文件名出现时,返回值为ture
                       }  
                }  
         }  


 

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


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值