FileDocCategorySizeDatePackage
FileURLConnection.javaAPI DocAndroid 1.5 API6494Wed May 06 22:41:04 BST 2009org.apache.harmony.luni.internal.net.www.protocol.file

FileURLConnection

public class FileURLConnection extends URLConnection
This subclass extends URLConnection.

This class is responsible for connecting, getting content and input stream of the file.

Fields Summary
String
fileName
private InputStream
is
private int
length
private boolean
isDir
private FilePermission
permission
Constructors Summary
public FileURLConnection(URL url)
Creates an instance of FileURLConnection for establishing a connection to the file pointed by this URL

param
url The URL this connection is connected to


                                  
       
        super(url);
        fileName = url.getFile();
        if (url.getRef() != null) {
            fileName += "#" + url.getRef(); //$NON-NLS-1$
        }
        if (fileName == null) {
            fileName = ""; //$NON-NLS-1$
        }
        String host = url.getHost();
        if (host != null && host.length() > 0) {
            fileName = "//" + host + fileName; //$NON-NLS-1$
        }
        fileName = Util.decode(fileName, false);
    
Methods Summary
public voidconnect()
This methods will attempt to obtain the input stream of the file pointed by this URL. If the file is a directory, it will return that directory listing as an input stream.

throws
IOException if an IO error occurs while connecting

        File f = new File(fileName);
        if (f.isDirectory()) {
            isDir = true;
            is = getDirectoryListing(f);
            // use -1 for the contentLength
        } else {
            // BEGIN android-modified
            is = new BufferedInputStream(new FileInputStream(f), 8192);
            // END android-modified
            length = is.available();
        }
        connected = true;
    
public intgetContentLength()
Returns the length of the file in bytes.

return
the length of the file
see
#getContentType()

        try {
            if (!connected) {
                connect();
            }
        } catch (IOException e) {
            // default is -1
        }
        return length;
    
public java.lang.StringgetContentType()
Returns the content type of the resource. Just takes a guess based on the name.

return
the content type

        try {
            if (!connected) {
                connect();
            }
        } catch (IOException e) {
            return MimeTable.UNKNOWN;
        }
        if (isDir) {
            return "text/html"; //$NON-NLS-1$
        }
        String result = guessContentTypeFromName(url.getFile());
        if (result == null) {
            return MimeTable.UNKNOWN;
        }
        return result;
    
private java.io.InputStreamgetDirectoryListing(java.io.File f)
Returns the directory listing of the file component as an input stream.

return
the input stream of the directory listing

        String fileList[] = f.list();
        ByteArrayOutputStream bytes = new java.io.ByteArrayOutputStream();
        PrintStream out = new PrintStream(bytes);
        out.print("<title>Directory Listing</title>\n"); //$NON-NLS-1$
        out.print("<base href=\"file:"); //$NON-NLS-1$
        out.print(f.getPath().replace('\\", '/") + "/\"><h1>" + f.getPath() //$NON-NLS-1$
                + "</h1>\n<hr>\n"); //$NON-NLS-1$
        int i;
        for (i = 0; i < fileList.length; i++) {
            out.print(fileList[i] + "<br>\n"); //$NON-NLS-1$
        }
        out.close();
        return new ByteArrayInputStream(bytes.toByteArray());
    
public java.io.InputStreamgetInputStream()
Returns the input stream of the object referred to by this URLConnection File Sample : "/ZIP211/+/harmony/tools/javac/resources/javac.properties" Invalid File Sample: "/ZIP/+/harmony/tools/javac/resources/javac.properties" "ZIP211/+/harmony/tools/javac/resources/javac.properties"

return
input stream of the object
throws
IOException if an IO error occurs

        if (!connected) {
            connect();
        }
        return is;
    
public java.security.PermissiongetPermission()
Returns the permission, in this case the subclass, FilePermission object which represents the permission necessary for this URLConnection to establish the connection.

return
the permission required for this URLConnection.
throws
IOException if an IO exception occurs while creating the permission.

        if (permission == null) {
            String path = fileName;
            if (File.separatorChar != '/") {
                path = path.replace('/", File.separatorChar);
            }
            permission = new FilePermission(path, "read"); //$NON-NLS-1$
        }
        return permission;