3f08a573a22e36141c30591beba5a054c7391103
[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.File;
33 import java.io.FileInputStream;
34 import java.io.FileOutputStream;
35 import java.io.IOException;
36 import java.io.InputStream;
37 import java.io.OutputStreamWriter;
38 import java.io.Reader;
39
40 import mir.config.MirPropertiesConfiguration;
41 import mir.config.MirPropertiesConfiguration.PropertiesConfigExc;
42
43 /**
44  * Hilfsklasse zum Mergen von Template und Daten
45  */
46 public final class FileUtil {
47
48   private static String producerStorageRoot;
49
50   //
51   // Initialisierung
52
53   static {
54     try {
55       producerStorageRoot =
56           MirPropertiesConfiguration.instance().getString("Producer.StorageRoot");
57     }
58     catch (PropertiesConfigExc e) {
59       e.printStackTrace();
60     }
61   }
62
63   /**
64    * Privater Konstruktor, um versehentliche Instantiierung zu verhindern
65    */
66   private FileUtil() {
67   }
68
69   public static File getFile(String filename) throws IOException {
70
71     try {
72       File f = null;
73       f = new File(filename);
74       File dir = new File(f.getParent());
75       dir.mkdirs();
76
77       return f;
78     }
79     catch (Exception e) {
80       throw new IOException(e.toString());
81     }
82
83   }
84
85   public static long write(File f, InputStream in) throws IOException {
86
87     long size = 0;
88
89     if (in != null) {
90       try {
91         FileOutputStream out = new FileOutputStream(f);
92
93         int read;
94         byte[] buf = new byte[8 * 1024];
95         while ( (read = in.read(buf)) != -1) {
96           out.write(buf, 0, read);
97           size += read;
98         }
99
100         in.close();
101         out.close();
102       }
103       catch (IOException e) {
104         throw new IOException(e.toString());
105       }
106     }
107     return size;
108   }
109
110   public static long write(String filename, InputStream in) throws IOException {
111
112     long size = 0;
113
114     if (in != null) {
115       try {
116         File f = getFile(filename);
117         size = write(f, in);
118       }
119       catch (IOException e) {
120         throw new IOException(e.toString());
121       }
122     }
123     return size;
124   }
125
126   public static long write(String filename, Reader in, String encoding) throws IOException {
127
128     long size = 0;
129
130     if (in != null) {
131       try {
132         File f = getFile(filename);
133         FileOutputStream fOut = new FileOutputStream(f);
134         OutputStreamWriter out = new OutputStreamWriter(fOut, encoding);
135         int read;
136         char[] cbuf = new char[8 * 1024];
137         while ( (read = in.read(cbuf)) != -1) {
138           out.write(cbuf, 0, read);
139           size += read;
140         }
141
142         out.close();
143         in.close();
144       }
145       catch (IOException e) {
146         throw new IOException(e.toString());
147       }
148     }
149     return size;
150   }
151
152   public static boolean read(String filename, byte out[]) throws IOException {
153
154     File f = null;
155     f = new File(filename);
156
157     if (f.exists()) {
158       try {
159         if (out.length != f.length())
160           return false;
161         FileInputStream inStream;
162         inStream = new FileInputStream(f);
163         inStream.read(out);
164         inStream.close();
165       }
166       catch (IOException e) {
167         throw new IOException(e.toString());
168       }
169     }
170     else {
171       return false;
172     }
173     return true;
174   }
175
176   public static long getSize(String filename) {
177     File f = null;
178     f = new File(filename);
179     long l = 0;
180
181     if (f.exists()) {
182       return f.length();
183     }
184     else {
185       return -1;
186     }
187   }
188
189 }