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())

时间: 07-06

File类--System.out.print(Object obj)的理解的相关文章

ArrayList集合--关于System.out.print(Object obj);的理解

1.ArrayList集合中常用的方法 ArrayList<Student> stuArrayList = new ArrayList<>(); //定义一个集合对象 stuArrayList.add():    //添加元素 stuArrayList.add(index, e):    //在某个位置添加元素,但不覆盖原元素 stuArrayList.get(index):    //获取某位置的元素 stuArrayList.size():    //获取集合长度 stuArr

java基础知识回顾之javaIO类--File类

File类是对文件系统中文件以及目录(文件夹)进行封装的对象,可以通过面向对象的思想来操作文件和目录(文件夹).File类保存文件或目录的各种元素的信息,包括文件名,文件长度,最后修改日期,是否可读,获取当前文件的路径名,判断指定文件是否存在,获得当前文件的列表,创建.删除文件目录等方法. /**     * 构造方法:File f = new File("file.txt");//file.txt 相对路径     *       File f1 = new File("c

File类中的一些属性 添加删除文件夹

import java.io.File; import java.io.IOException; public class FileD { public static void main(String[] args) throws IOException {        fun();                 System.out.println();                fun1();  System.out.println();               fun2();

java中File类的使用

public class FileLei { public static void main(String[] args) throws IOException {        //..表示上一级目录     .表示当前所在目录        File file = new File("C:\\Users\\cdlx2016\\Desktop\\file类");        System.out.println("是否存在该文件:"+file.exists())

第1章 Object类 &amp; System类

1.1 Object类1.1.1 概述Object类是Java语言中的根类,即所有类的父类.它中描述的所有方法子类都可以使用.所有类在创建对象的时候,最终找的父类就是Object.在Object类众多方法中,我们先学习equals方法与toString方法,其他方法后面课程中会陆续学到.1.1.2 获取字节码对象的方式1.通过Object类的getClass()方法获取2.通过类名调用属性class来获取 通过Class类的静态方法forName()来获取1.1.2.1 案例代码一 packag

.NET基础 (11)类型的基类System.Object

类型的基类System.Object1 是否存在不继承自System.Object类型的类2 在System.Object中定义的三个比较方法有何异同3 如何重写GetHashCode方法 类型的基类System.Object1 是否存在不继承自System.Object类型的类 通过运行ILasm.exe的noautoinherit开关,可以生产不从System.Object继承的类型,这种类型是不安全的类型,也不建议使用. 2 在System.Object中定义的三个比较方法有何异同 静态方

Object类.时间日期类.System类.Stringbuilder类.包装类

Object类 java.lang.Object类是java语言中的根类,即所有类的父类.它中描述的所有方法都可以使用.在对象实例化的时候,最终找的父类就是Object. 如果一个类没有特别指定父类,那么默认则继承自Object类.例如: 自己随便定义的一个类: public void Demo{ //......... } 根据JDK源码和Object类的API文档,Object类当中包含的方法有11个,然后,我只挑选了两个来做重点介绍: public String toString():返回

详解C#中System.IO.File类和System.IO.FileInfo类的用法

System.IO.File类和System.IO.FileInfo类主要提供有关文件的各种操作,在使用时需要引用System.IO命名空间.下面通过程序实例来介绍其主要属性和方法. (1) 文件打开方法:File.Open () 该方法的声明如下:     public static FileStream Open(string path,FileMode mode)  下面的代码打开存放在c:\tempuploads目录下名称为newFile.txt文件,并在该文件中写入hello. pri

深度解析java.lang.String类的equal(Object obj)方法

背景:最近在研究静态扫描的东西,遇到一个规则:"equals(Object obj)" should be overridden along with the "compareTo(T obj)" method 然后就想深度扒一扒equals和compareTo有什么区别 首先先来看下java.lang.String这个类下面的equals方法是如何实现的. public boolean equals(Object anObject) { if (this == a