Initial import
[jpf-core.git] / src / classes / java / io / FileOutputStream.java
1 /*
2  * Copyright (C) 2014, United States Government, as represented by the
3  * Administrator of the National Aeronautics and Space Administration.
4  * All rights reserved.
5  *
6  * The Java Pathfinder core (jpf-core) platform is licensed under the
7  * Apache License, Version 2.0 (the "License"); you may not use this file except
8  * in compliance with the License. You may obtain a copy of the License at
9  * 
10  *        http://www.apache.org/licenses/LICENSE-2.0. 
11  *
12  * Unless required by applicable law or agreed to in writing, software
13  * distributed under the License is distributed on an "AS IS" BASIS,
14  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15  * See the License for the specific language governing permissions and 
16  * limitations under the License.
17  */
18 package java.io;
19
20 import java.nio.channels.FileChannel;
21
22 public class FileOutputStream extends OutputStream {
23
24   FileDescriptor fd;
25   private FileChannel fc = null;
26   
27   public FileOutputStream (String fname) throws FileNotFoundException {
28     try {
29       fd = new FileDescriptor(fname, FileDescriptor.FD_WRITE);
30     } catch (IOException iox){
31       throw new FileNotFoundException(fname);
32     }
33   }
34   
35   public FileOutputStream (File file) throws FileNotFoundException {
36     this( file.getAbsolutePath());
37   }
38   
39   public FileOutputStream (FileDescriptor fd) {
40     this.fd = fd;
41   }
42   
43   public FileChannel getChannel() {
44     if(this.fc ==null){
45       this.fc = new FileChannel(fd);
46     }
47     return this.fc;
48   }
49   
50   public FileDescriptor getFD() {
51     return fd;
52   }
53   
54   //--- our native peer methods
55   
56   boolean open (String fname) {
57     // this sets the FileDescriptor from the peer side
58     return false;
59   }
60   
61   @Override
62   public void write (int b) throws IOException {
63     fd.write(b);
64   }
65
66   @Override
67   public void write (byte[] buf, int off, int len) throws IOException {
68     fd.write(buf, off, len);
69   }
70   
71   @Override
72   public void close () throws IOException {
73     fd.close();
74   }
75
76   @Override
77   public void flush () throws IOException {
78     fd.sync();
79   }
80 }