FSF GCC merge 02/23/03
[official-gcc.git] / libjava / java / io / FileInputStream.java
blob85d7bbe0879f5337ac23cbf3da06d922da0e04da
1 /* Copyright (C) 1998, 1999, 2001, 2002, 2003 Free Software Foundation
3 This file is part of libgcj.
5 This software is copyrighted work licensed under the terms of the
6 Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
7 details. */
9 package java.io;
11 import java.nio.channels.FileChannel;
13 /**
14 * @author Warren Levy <warrenl@cygnus.com>
15 * @date October 28, 1998.
17 /* Written using "Java Class Libraries", 2nd edition, ISBN 0-201-31002-3
18 * "The Java Language Specification", ISBN 0-201-63451-1
19 * plus online API docs for JDK 1.2 beta from http://www.javasoft.com.
20 * Status: Believed complete and correct.
23 public class FileInputStream extends InputStream
25 /* Contains the file descriptor for referencing the actual file. */
26 private FileDescriptor fd;
28 private FileChannel ch;
30 public FileInputStream(String name) throws FileNotFoundException
32 SecurityManager s = System.getSecurityManager();
33 if (s != null)
34 s.checkRead(name);
35 fd = new FileDescriptor(name, FileDescriptor.READ);
38 public FileInputStream(File file) throws FileNotFoundException
40 this(file.getPath());
43 public FileInputStream(FileDescriptor fdObj)
45 SecurityManager s = System.getSecurityManager();
46 if (s != null)
47 s.checkRead(fdObj);
48 fd = fdObj;
51 public int available() throws IOException
53 return fd.available();
56 public void close() throws IOException
58 if (fd.valid())
59 fd.close();
62 protected void finalize() throws IOException
64 // We don't actually need this, but we include it because it is
65 // mentioned in the JCL.
68 public final FileDescriptor getFD() throws IOException
70 if (!fd.valid())
71 throw new IOException();
72 return fd;
75 public int read() throws IOException
77 return fd.read();
80 public int read(byte[] b) throws IOException
82 return fd.read(b, 0, b.length);
85 public int read(byte[] b, int off, int len) throws IOException
87 if (off < 0 || len < 0 || off + len > b.length)
88 throw new ArrayIndexOutOfBoundsException();
90 return fd.read(b, off, len);
93 public long skip(long n) throws IOException
95 long startPos = fd.getFilePointer();
96 long endPos = fd.seek(n, FileDescriptor.CUR, true);
97 return endPos - startPos;
100 public FileChannel getChannel ()
102 return ch;