/* 
 * Copyright (c) Ian F. Darwin, http://www.darwinsys.com/, 1996-2002. 
 * All rights reserved. Software written by Ian F. Darwin and others. 
 * $Id: LICENSE,v 1.8 2004/02/09 03:33:38 ian Exp $ 
 * 
 * Redistribution and use in source and binary forms, with or without 
 * modification, are permitted provided that the following conditions 
 * are met: 
 * 1. Redistributions of source code must retain the above copyright 
 *    notice, this list of conditions and the following disclaimer. 
 * 2. Redistributions in binary form must reproduce the above copyright 
 *    notice, this list of conditions and the following disclaimer in the 
 *    documentation and/or other materials provided with the distribution. 
 * 
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' 
 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 
 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 
 * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS 
 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 
 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
 * POSSIBILITY OF SUCH DAMAGE. 
 *  
 * Java, the Duke mascot, and all variants of Sun's Java "steaming coffee 
 * cup" logo are trademarks of Sun Microsystems. Sun's, and James Gosling's, 
 * pioneering role in inventing and promulgating (and standardizing) the Java  
 * language and environment is gratefully acknowledged. 
 *  
 * The pioneering role of Dennis Ritchie and Bjarne Stroustrup, of AT&T, for 
 * inventing predecessor languages C and C++ is also gratefully acknowledged. 
 */ 
 
import java.io.File; 
import java.io.IOException; 
import java.util.Date; 
 
/** 
 * Report on a file's status in Java 
 *  
 * @author Ian F. Darwin, http://www.darwinsys.com/ 
 * @version $Id: FileStatus.java,v 1.6 2004/03/11 03:25:35 ian Exp $ 
 */ 
public class FileStatus { 
  public static void main(String[] argv) throws IOException { 
 
    // Ensure that a filename (or something) was given in argv[0] 
    if (argv.length == 0) { 
      System.err.println("Usage: FileStatus filename"); 
      System.exit(1); 
    } 
    for (int i = 0; i < argv.length; i++) { 
      status(argv[i]); 
    } 
  } 
 
  public static void status(String fileName) throws IOException { 
    System.out.println("---" + fileName + "---"); 
 
    // Construct a File object for the given file. 
    File f = new File(fileName); 
 
    // See if it actually exists 
    if (!f.exists()) { 
      System.out.println("file not found"); 
      System.out.println(); // Blank line 
      return; 
    } 
    // Print full name 
    System.out.println("Canonical name " + f.getCanonicalPath()); 
    // Print parent directory if possible 
    String p = f.getParent(); 
    if (p != null) { 
      System.out.println("Parent directory: " + p); 
    } 
    // Check if the file is readable 
    if (f.canRead()) { 
      System.out.println("File is readable."); 
    } 
    // Check if the file is writable 
    if (f.canWrite()) { 
      System.out.println("File is writable."); 
    } 
    // Report on the modification time. 
    Date d = new Date(); 
    d.setTime(f.lastModified()); 
    System.out.println("Last modified " + d); 
 
    // See if file, directory, or other. If file, print size. 
    if (f.isFile()) { 
      // Report on the file's size 
      System.out.println("File size is " + f.length() + " bytes."); 
    } else if (f.isDirectory()) { 
      System.out.println("It's a directory"); 
    } else { 
      System.out.println("I dunno! Neither a file nor a directory!"); 
    } 
 
    System.out.println(); // blank line between entries 
  } 
} 
 
            
          
     
     
     
  
  |