程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Java IO流學習總結二:File

Java IO流學習總結二:File

編輯:關於JAVA

Java IO流學習總結二:File。本站提示廣大學習愛好者:(Java IO流學習總結二:File)文章只能為提供參考,不一定能成為您想要的結果。以下是Java IO流學習總結二:File正文


轉載請標明出處:http://blog.csdn.net/zhaoyanjun6/article/details/54581478
本文出自【趙彥軍的博客】

Java File類的功用十分弱小,應用java根本上可以對文件停止一切操作。
首先來看File類的結構函數的源碼

   /**
     * Internal constructor for already-normalized pathname strings.
     */
  private File(String pathname, int prefixLength) {
        this.path = pathname;
        this.prefixLength = prefixLength;
    }

    /**
     * Internal constructor for already-normalized pathname strings.
     * The parameter order is used to disambiguate this method from the
     * public(File, String) constructor.
     */
    private File(String child, File parent) {
        assert parent.path != null;
        assert (!parent.path.equals(""));
        this.path = fs.resolve(parent.path, child);
        this.prefixLength = parent.prefixLength;
    }

    /**
     * Creates a new <code>File</code> instance by converting the given
     * pathname string into an abstract pathname.  If the given string is
     * the empty string, then the result is the empty abstract pathname.
     *
     * @param   pathname  A pathname string
     * @throws  NullPointerException
     *          If the <code>pathname</code> argument is <code>null</code>
     */
    public File(String pathname) {
        if (pathname == null) {
            throw new NullPointerException();
        }
        this.path = fs.normalize(pathname);
        this.prefixLength = fs.prefixLength(this.path);
    }

 
     /**
     * @param   parent  The parent pathname string
     * @param   child   The child pathname string
     * @throws  NullPointerException
     *          If <code>child</code> is <code>null</code>
     */
    public File(String parent, String child) {
        if (child == null) {
            throw new NullPointerException();
        }
        if (parent != null && !parent.isEmpty()) {
            this.path = fs.resolve(fs.normalize(parent),
                                   fs.normalize(child));
        } else {
            this.path = fs.normalize(child);
        }
        this.prefixLength = fs.prefixLength(this.path);
    }

    /**
     * @param   parent  The parent abstract pathname
     * @param   child   The child pathname string
     * @throws  NullPointerException
     *          If <code>child</code> is <code>null</code>
     */
    public File(File parent, String child) {
        if (child == null) {
            throw new NullPointerException();
        }
        if (parent != null) {
            if (parent.path.equals("")) {
                this.path = fs.resolve(fs.getDefaultParent(),
                                       fs.normalize(child));
            } else {
                this.path = fs.resolve(parent.path,
                                       fs.normalize(child));
            }
        } else {
            this.path = fs.normalize(child);
        }
        this.prefixLength = fs.prefixLength(this.path);
    }

    /**
     * @param  uri
     *         An absolute, hierarchical URI with a scheme equal to
     *         <tt>"file"</tt>, a non-empty path component, and undefined
     *         authority, query, and fragment components
     *
     * @throws  NullPointerException
     *          If <tt>uri</tt> is <tt>null</tt>
     *
     * @throws  IllegalArgumentException
     *          If the preconditions on the parameter do not hold
     */
    public File(URI uri) {

        // Check our many preconditions
        if (!uri.isAbsolute())
            throw new IllegalArgumentException("URI is not absolute");
        if (uri.isOpaque())
            throw new IllegalArgumentException("URI is not hierarchical");
        String scheme = uri.getScheme();
        if ((scheme == null) || !scheme.equalsIgnoreCase("file"))
            throw new IllegalArgumentException("URI scheme is not \"file\"");
        if (uri.getAuthority() != null)
            throw new IllegalArgumentException("URI has an authority component");
        if (uri.getFragment() != null)
            throw new IllegalArgumentException("URI has a fragment component");
        if (uri.getQuery() != null)
            throw new IllegalArgumentException("URI has a query component");
        String p = uri.getPath();
        if (p.equals(""))
            throw new IllegalArgumentException("URI path component is empty");

        // Okay, now initialize
        p = fs.fromURIPath(p);
        if (File.separatorChar != '/')
            p = p.replace('/', File.separatorChar);
        this.path = fs.normalize(p);
        this.prefixLength = fs.prefixLength(this.path);
    }

從源碼可以看出File類的結構函數有6個,精簡如下

public File(String pathname)  //文件的相對途徑
public File(URI uri)  //文件的URI地址

public File(String parent, String child)  //指定父文件相對途徑、子文件相對途徑
public File(File parent, String child)  //指定父文件、子文件絕對途徑


//上面這兩個是File類中公有的結構函數,裡面不能調用
private File(String child, File parent)  
private File(String pathname, int prefixLength) 

如今就看的比擬清楚了,6個結構函數,可以分為2類。4個公共結構函數,2個公有結構函數。

結構函數1:

//電腦d盤中的cat.png 圖片的途徑
String filePath1 = "D:/cat.png" ;
File file = new File( filePath1 ) ;

結構函數2:

String parentFilePath = "E:/cat" ;
        
String childFilePath = "small_cat.txt" ;

//創立parentFile文件
File parentFile = new File( parentFilePath ) ;
parentFile.mkdir() ;
        
//假如parentFile不存在,就會報異常
File file = new File( parentFilePath  , childFilePath ) ;
    
try {
    file.createNewFile() ;
} catch (IOException e) {
    e.printStackTrace();
}

效果圖:

結構函數3:

String parentFilePath = "E:/cat" ;

//結構父文件
File parent = new File( parentFilePath ) ;
parent.mkdir(); 

//假如parent文件不存在,就會報異常
File file = new File( parent  , "small_cat.txt" ) ;
    
try {
    file.createNewFile() ;
} catch (IOException e) {
    e.printStackTrace();
}

效果圖:

  • 創立目錄

    boolean  file.mkdir()

    假如創立成功,前往 true , 創立失敗,前往false。假如這個文件夾曾經存在,則前往false.
    只能創立一級目錄,假如父目錄不存在,前往false.

  • 創立多級目錄

    boolean  file.mkdirs() 

    創立多級目錄,創立成功,前往true,創立失敗,前往false。假如父目錄不存在,就創立,並且前往true.

  • 創立一個新的文件

    boolean file.createNewFile() ;

    假如文件不存在就創立該文件,創立成功,前往 true ;創立失敗,前往false。假如這個文件曾經存在,則前往false.

  • 判別辦法

boolean file.exists() //文件能否存在

boolean file.isFile() //能否是文件

boolean file.isDirectory() //能否是目錄

boolean file.isHidden()   //能否隱藏(windows上可以設置某個文件能否隱藏)

boolean file.isAbsolute() //能否為相對途徑

boolean file.canRead()  //能否可讀

boolean file.canWrite() //能否可寫

boolean file.canExecute()  //能否可執行

獲取文件的信息

String file.getName() //獲取文件的名字,只是名字,沒有途徑

String file.getParent() //獲取父目錄的相對途徑,前往值是一個字符串。假如文件有父目錄,那麼前往父目錄的相對途徑,(比方:`E:\cat`) , 假如文件自身就在磁盤的根目錄,那麼前往磁盤的途徑,(比方:`E:\`)。

File file.getParentFile() //獲取父文件,前往值是一個File對象。

long time = file.lastModified() ; //前往文件最後一次修正的時間
Date dt = new Date(time);

boolean renameTo(File file) //文件命名

long file.length() //前往文件的大小,單位字節

boolean file.delete() //刪除文件

String[] file.list() //獲取該目錄下的一切的文件的名字。假如`file`為文件,前往值為`null`,在運用時記得判空;但是假如`file`為目錄,那麼前往這個目錄下一切文件的名字,只是名字,不含途徑;假如`file`是一個空目錄,前往一個長度為0的數組;從下面的後果可以看出,`list()` 辦法,只是對`file`為目錄時無效,當`file`為一個文件的時分,該辦法毫有意義。

File[] file.listFiles() //獲取該目錄下的一切的文件。假如`file`為文件,前往值為`null`,在運用時記得判空;但是假如`file`為目錄,那麼前往這個目錄下一切的文件 ;假如`file`是一個空目錄,前往一個長度為0的數組;從下面的後果可以看出,`listFiles()` 辦法,只是對`file`為目錄時無效,當`file`為一個文件的時分,該辦法毫有意義。
實戰經歷: file.list() , file.listFiles()
String filePath = "E:/cat" ;
File file = new File( filePath ) ;
file.mkdir() ;

String[] names = file.list() ;

for( int i = 0 ; i < names.length ; i++ ){
    System.out.println( "names: " +names[i]);
}

File[] files = file.listFiles() ;
for( int i = 0 ; i < files.length ; i++ ){
    System.out.println( "files: "+ files[i].getAbsolutePath() );
}

效果圖:




  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved