
 
                File manager based on 
java.io.File.  A common way
 to obtain an instance of this class is using 
getStandardFileManager, for example: 
   JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
   DiagnosticCollector<JavaFileObject> diagnostics =
       new DiagnosticCollector<JavaFileObject>();
   StandardJavaFileManager fm = compiler.getStandardFileManager(diagnostics, null, null);
 
 This file manager creates file objects representing regular 
files, 
zip file entries, or entries in
 similar file system based containers.  Any file object returned
 from a file manager implementing this interface must observe the
 following behavior: 
   
     File names need not be canonical.
   
   
     For file objects representing regular files
     
   
   
     The URI returned from
     FileObject.toUri()
     
       
         must be absolute (have a schema), and
       
       
         must have a normalized
         path component which
         can be resolved without any process-specific context such
         as the current directory (file names must be absolute).
       
     
   
 
 According to these rules, the following URIs, for example, are
 allowed: 
   
     file:///C:/Documents%20and%20Settings/UncleBob/BobsApp/Test.java
   
   
     jar:///C:/Documents%20and%20Settings/UncleBob/lib/vendorA.jar!com/vendora/LibraryClass.class
   
 
 Whereas these are not (reason in parentheses): 
   
     file:BobsApp/Test.java (the file name is relative
     and depend on the current directory)
   
   
     jar:lib/vendorA.jar!com/vendora/LibraryClass.class
     (the first half of the path depends on the current directory,
     whereas the component after ! is legal)
   
   
     Test.java (this URI depends on the current
     directory and does not have a schema)
   
   
     jar:///C:/Documents%20and%20Settings/UncleBob/BobsApp/../lib/vendorA.jar!com/vendora/LibraryClass.class
     (the path is not normalized)