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
11 import java
.nio
.channels
.FileChannel
;
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();
35 fd
= new FileDescriptor(name
, FileDescriptor
.READ
);
38 public FileInputStream(File file
) throws FileNotFoundException
43 public FileInputStream(FileDescriptor fdObj
)
45 SecurityManager s
= System
.getSecurityManager();
51 public int available() throws IOException
53 return fd
.available();
56 public void close() throws IOException
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
71 throw new IOException();
75 public int read() throws IOException
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 ()