• File类--System.out.print(Object obj)的理解


    一.File 类(java.io)
    概述:Java中使用File类来表示文件或者文件夹对象!
         抽象路径名:描述文件或文件夹时,使用的路径符号,就是一个对象的字符串表示形式,如"c:\";
         绝对路径:绝对位置开始的路径;
         相对路径:相对位置开始的路径;

    构造方法:
         File(String pathname)
         File(String parent, String child)
         File(File parent, String child)

    常用方法:
    1.创建与删除的方法
    public boolean createNewFile(){}:当且仅当不存在具有此抽象路径名指定名称的文件时,不可分地创建一个新的空文件.
                                     报:IOException;
    public boolean mkdir(){}:创建此抽象路径名指定的目录.
    public boolean mkdirs(){}:创建此抽象路径名指定的目录,包括所有必需但不存在的父目录.
    public boolean delete(){}:删除此抽象路径名表示的文件或目录。
                                 注意1:删除的内容不进回收站,彻底删除!
                                 注意2:如果File对象是文件夹,且文件夹的内容不为空,会删除失败!
    2.其它常用方法
    public boolean exists(){}:测试此抽象路径名表示的文件或目录是否在硬盘上存在。
    public boolean isDirectory(){}:测试此抽象路径名表示的文件是否是一个目录.必须先保证exists方法得到true,才有效,否则,永远得false;
    public boolean isFile(){}:测试此抽象路径名表示的文件是否是一个标准文件.必须先保证exists方法得到true,才有效,否则,永远得false
    public String getAbsolutePath(){}:返回此抽象路径名的绝对路径名字符串.--(得到是字符串!!!)
    public String getPath(){}:将此抽象路径名转换为一个路径名字符串。(得到的值就是创建对象的时候传递的参数).--(得到是字符串!!!)
    public String toString(){}:返回此抽象路径名的路径名字符串.等同于getPath方法.--(得到是字符串!!!)
    public String getName(){}:返回由此抽象路径名表示的文件或目录的名称.----(得到是字符串!!!)
    public String getParent(){}:返回此抽象路径名父目录的路径名字符串;如果此路径名没有指定父目录,则返回 null----(得到是字符串!!!)
    public File getParentFile(){}:返回此抽象路径名父目录的抽象路径名;如果此路径名没有指定父目录,则返回 null
    public long    length(){}:返回由此抽象路径名表示的文件的长度。不能使用文件夹对象调用,否则得到的数据无意义
    public String[] list(){}:列出指定文件夹下全部内容,仅列出名称
    public File[] listFiles(){}:列出指定目录下的全部内容,会列出路径
    public boolean renameTo(File dest){}:为已有的文件重新命名.如果参数dest表示的文件(A)的路径与调用renameTo方法的那个对象(B),
                                         在同一个文件夹下,是重命名的效果,如果不在同一个文件夹下,是剪切的效果;
                                         报:NullPointerException;
    public File[] listFiles(FileFilter filter){}:通过过滤器获取对象数组;

    3.常量
    public static final String pathSeparator:路径分隔符,windows中是":"
    public static final String separator:路径分隔符,windows中是"";

    代码演示:

      1 /*相对工程所在的目录创建一个Demo文件夹,里面包含两个文件夹Demo1和Demo2;
      2  Demo1文件夹里包含11.txt和11.java文件;
      3 Demo2文件夹里包含21.txt和21.java文件;
      4 遍历取出Demo文件夹里所有的java文件,并输出各java文件的绝对路径和父目录路径名
      5 */
      6 
      7 import java.io.File;
      8  import java.io.IOException;
      9  public class DemoFile{
     10      public static void main(String[] args) throws IOException{
     11          //相对工程所在的目录创建一个Demo文件夹,里面包含两个文件夹Demo1和Demo2
     12          File f1 = new File("Demo\Demo1");
     13          File f2 = new File("Demo\Demo2");
     14          f1.mkdirs();
     15          f2.mkdirs();
     16          //Demo1文件夹里包含11.txt和11.java文件
     17         File f3 = new File(f1,"11.txt");
     18          File f4 = new File(f1,"11.java");
     19         f3.createNewFile();
     20          f4.createNewFile();
     21          //Demo2文件夹里包含21.txt和21.java文件
     22         File f5 = new File(f2,"21.txt");
     23          File f6 = new File(f2,"21.java");
     24          f5.createNewFile();
     25          f6.createNewFile();
     26          //遍历取出Demo文件夹里所有的java文件,并输出各java文件的绝对路径和父目录路径名
     27         printfil(f1.getParentFile());
     28      }
     29 
     30     public static void printfil(File f){
     31          //安全校验
     32         if(f.exists() && f != null && f.isDirectory()){
     33              //列出目录下所有文件内容
     34             File[] file = f.listFiles();
     35              //遍历,并匹配以java结尾的文件
     36             for(File f1 : file){
     37                  //判断是不是标准文件
     38                 if(f1.isFile()){
     39                      if(f1.getName().endsWith(".java")){
     40                          System.out.println("java文件绝对路径:"+f1.getAbsolutePath());
     41                          System.out.println("java文件父路径:"+f1.getParent());
     42                      }else{
     43                          System.out.println("忽略的文件为:"+f1.getName());
     44                      }
     45                  //如果不是标准文件,则继续调用本方法
     46                 }else{
     47                      printfil(f1);
     48                  }
     49              }
     50          }
     51      }
     52  }
     53 



    二.关于System.out.print(Object obj);的理解
    1.System调用其类属性out,而out又是PrintStream类型,所以out可以调用类PrintStream的方法print.
    2.调用print()打印Object时,会判断Object是否为空,如果为空,输出null;如果非空,调用Object的toString().
    3.如果toString()方法被覆写,那就调用覆写后的;如果没有被覆写,就用自身的,自身的方法是用反射获取类名称,
         然后拼接一个"@",再调用hashCode()方法,并将其返回值变为16进制字符串.
    4.如果hashCode()被覆写了,就调用覆写后的,输出后为哈希散列特征码;如果没有被覆写,就用自身的,
         这个自带的hashCode()实现的逻辑是本地代码,JDK源码并末提供.输出为地址值.

    附:
    public void print(Object obj)--java.io.PrintStream
         The string produced by the String.valueOf(Object) method is translated into bytes
    public String toString()--- java.lang.String
         getClass().getName() + '@' + Integer.toHexString(hashCode())

  • 相关阅读:
    2013,爱上暗色调
    [转]Sublime Text 使用介绍、全套快捷键及插件推荐
    委托、事件
    ASP.NET中常用的三十三种代码 .NET技术 / ASP.NET
    台湾综艺节目
    C# 中的委托和事件
    ASP.net 静态化页面之的URL重写
    源码
    毕业5年决定你的一生
    常见错误 不能打开注册表关键字
  • 原文地址:https://www.cnblogs.com/huguangqin/p/7128744.html
Copyright © 2020-2023  润新知