Add unit tests for Config.java.
[cfb.git] / prod / net / jaekl / qd / util / FileIO.java
1 package net.jaekl.qd.util;
2
3 import java.io.File;
4 import java.io.FileInputStream;
5 import java.io.FileNotFoundException;
6 import java.io.FileOutputStream;
7 import java.io.InputStream;
8 import java.io.OutputStream;
9
10 // Dispatch File Input/Output operations from a singleton
11 // This makes it possible to intercept file reads and writes
12 // during unit testing, and replace them with mock operations.
13
14 public class FileIO {
15         // Note:  need volatile to implement double-checked locking in getInst()
16         static volatile FileIO m_inst = null;
17         
18         FileIO() { ; }
19         
20         public static FileIO getInst() { 
21                 FileIO result = m_inst;
22                 if (null == result) {
23                         synchronized(FileIO.class) {
24                                 if (null == m_inst) {
25                                         m_inst = new FileIO();
26                                 }
27                                 result = m_inst;
28                         }
29                 }
30                 return result;
31         }
32         
33         public InputStream openInput(File file) throws FileNotFoundException 
34         {
35                 return new FileInputStream(file);
36         }
37         
38         public OutputStream openOutput(File file) throws FileNotFoundException 
39         {
40                 return new FileOutputStream(file);
41         }
42 }