whoops
[mir.git] / source / mir / misc / FileUtil.java
1 /*
2  * Copyright (C) 2001, 2002 The Mir-coders group
3  *
4  * This file is part of Mir.
5  *
6  * Mir is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation; either version 2 of the License, or
9  * (at your option) any later version.
10  *
11  * Mir is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with Mir; if not, write to the Free Software
18  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
19  *
20  * In addition, as a special exception, The Mir-coders gives permission to link
21  * the code of this program with  any library licensed under the Apache Software License, 
22  * The Sun (tm) Java Advanced Imaging library (JAI), The Sun JIMI library 
23  * (or with modified versions of the above that use the same license as the above), 
24  * and distribute linked combinations including the two.  You must obey the 
25  * GNU General Public License in all respects for all of the code used other than 
26  * the above mentioned libraries.  If you modify this file, you may extend this 
27  * exception to your version of the file, but you are not obligated to do so.  
28  * If you do not wish to do so, delete this exception statement from your version.
29  */
30 package mir.misc;
31
32 import java.io.BufferedInputStream;
33 import java.io.BufferedOutputStream;
34 import java.io.BufferedWriter;
35 import java.io.File;
36 import java.io.FileInputStream;
37 import java.io.FileOutputStream;
38 import java.io.IOException;
39 import java.io.InputStream;
40 import java.io.OutputStreamWriter;
41 import java.io.Reader;
42
43 import mir.config.MirPropertiesConfiguration;
44 import mir.config.MirPropertiesConfiguration.PropertiesConfigExc;
45
46 /**
47  * Hilfsklasse zum Mergen von Template und Daten
48  */
49 public final class FileUtil {
50
51   private static String producerStorageRoot;
52
53
54   static {
55     try {
56       producerStorageRoot =
57           MirPropertiesConfiguration.instance().getString("Producer.StorageRoot");
58     }
59     catch (PropertiesConfigExc e) {
60       e.printStackTrace();
61     }
62   }
63
64   /**
65    * Privater Construktor to avoid accidental instantiation
66    */
67   private FileUtil() {
68   }
69
70   public static File getFile(String filename) throws IOException {
71
72     try {
73       File f = null;
74       f = new File(filename);
75       File dir = new File(f.getParent());
76       dir.mkdirs();
77
78       return f;
79     }
80     catch (Exception e) {
81       throw new IOException(e.toString());
82     }
83
84   }
85
86   public static long write(File f, InputStream in) throws IOException {
87
88     long size = 0;
89
90     if (in != null) {
91       try {
92         BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(f),8192);
93
94         // TODO get size with in.available()
95         int read;
96         byte[] buf = new byte[8 * 1024];
97         while ( (read = in.read(buf)) != -1) {
98           out.write(buf, 0, read);
99           size += read;
100         }
101
102         in.close();
103         out.close();
104       }
105       catch (IOException e) {
106         throw new IOException(e.toString());
107       }
108     }
109     return size;
110   }
111
112   public static long write(String filename, InputStream in) throws IOException {
113
114     long size = 0;
115
116     if (in != null) {
117       try {
118         File f = getFile(filename);
119         size = write(f, in);
120       }
121       catch (IOException e) {
122         throw new IOException(e.toString());
123       }
124     }
125     return size;
126   }
127
128   public static long write(String filename, Reader in, String encoding) throws IOException {
129
130     long size = 0;
131
132     if (in != null) {
133       try {
134         File f = getFile(filename);
135         FileOutputStream fOut = new FileOutputStream(f);
136         BufferedWriter out = new BufferedWriter(new OutputStreamWriter(fOut, encoding),8192);
137         int read;
138         char[] cbuf = new char[8 * 1024];
139         while ( (read = in.read(cbuf)) != -1) {
140           out.write(cbuf, 0, read);
141           size += read;
142         }
143
144         out.close();
145         in.close();
146       }
147       catch (IOException e) {
148         throw new IOException(e.toString());
149       }
150     }
151     return size;
152   }
153
154   public static boolean read(String filename, byte out[]) throws IOException {
155
156     File f = null;
157     f = new File(filename);
158
159     if (f.exists()) {
160       try {
161         if (out.length != f.length())
162           return false;
163         BufferedInputStream inStream;
164         inStream = new BufferedInputStream(new FileInputStream(f),8192);
165         inStream.read(out);
166         inStream.close();
167       }
168       catch (IOException e) {
169         throw new IOException(e.toString());
170       }
171     }
172     else {
173       return false;
174     }
175     return true;
176   }
177
178   public static long getSize(String filename) {
179     File f = null;
180     f = new File(filename);
181     long l = 0;
182
183     if (f.exists()) {
184       return f.length();
185     }
186     else {
187       return -1;
188     }
189   }
190
191 }