001 /* Copyright 2000, 2001, Compaq Computer Corporation */ 002 003 package javafe.genericfile; 004 005 006 import java.io.IOException; 007 import java.io.InputStream; 008 009 010 /** 011 * Instances of UnopenableFile are {@link GenericFile}s that cannot 012 * be opened. <p> 013 * 014 * Their value lies solely in their associated naming, etc., info.<p> 015 * 016 * Example: {@link javafe.util.CorrelatedReader}'s keeps an open 017 * {@link InputStream} and an associated {@link GenericFile}. In the 018 * case of unreopenable streams like stdin, the associated {@link 019 * GenericFile} is an UnopenableFile with the name "stdin". 020 */ 021 022 public class UnopenableFile implements GenericFile { 023 024 /*************************************************** 025 * * 026 * Instance variables: * 027 * * 028 **************************************************/ 029 030 //* Our human readable name: 031 /*@ non_null @*/ String humanName; 032 033 //* Are we a directory? 034 boolean isDir; 035 036 037 /*************************************************** 038 * * 039 * Creation: * 040 * * 041 **************************************************/ 042 043 /** 044 * Create a ordinary (aka, non-directory) UnopenableFile with 045 * human-name name. 046 * 047 * The resulting file has no modification date available and a 048 * local name of "". 049 */ 050 public UnopenableFile(/*@ non_null @*/ String name) { 051 this(name, false); 052 } 053 054 055 /** 056 * Create an UnopenableFile with human-name name that is a 057 * directory iff isDir. 058 * 059 * The resulting file has no modification date available and a 060 * local name of "". 061 */ 062 public UnopenableFile(/*@ non_null @*/ String name, boolean isDir) { 063 humanName = name; 064 this.isDir = isDir; 065 } 066 067 068 /*************************************************** 069 * * 070 * GenericFile interface implementation: * 071 * * 072 **************************************************/ 073 074 public String getHumanName() { return humanName; } 075 076 public String getCanonicalID() { 077 return "<javafe.filespace.UnopenableFile>" + humanName; 078 } 079 080 public String getLocalName() { return ""; } 081 082 public boolean isDirectory() { return isDir; } 083 084 public InputStream getInputStream() throws IOException { 085 throw new IOException( 086 "Attempt to open an unopenable genericfile"); 087 } 088 089 public long lastModified() { return 0L; } 090 091 public GenericFile getSibling(String n) { return null; } 092 }