1 package org.opensync.engine.util;
2
3 import java.io.*;
4 import org.opensync.engine.server.OpenSyncException;
5 import org.opensync.tools.Utils;
6
7
8 public class FileHelper implements Serializable {
9
10
11 int currentLineNumber = 0;
12 boolean endOfFileReader = false;
13 boolean startRead = true;
14 boolean startOfFileWriter = true;
15
16 LineNumberReader bufferedReader = null;
17 FileReader fileReader = null;
18
19 public void clean() {
20 bufferedReader = null;
21 fileReader = null;
22 }
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80 /***
81 * Contruct a FileHelper, not needed, use static methods instead
82 *
83 */
84 public FileHelper() {
85 this.startRead = true;
86
87 currentLineNumber = 0;
88 endOfFileReader = false;
89 startRead = true;
90 startOfFileWriter = true;
91 }
92
93 public void setStarting(boolean flag) {
94 startOfFileWriter = flag;
95 }
96 /***
97 * Return the content of the file <code>path</code> as a <code>String</code>
98 *
99 * @param path the absolute path of the file
100 * @exception IOException
101 */
102 public static String fileToString(String path)throws IOException{
103 BufferedReader bufferedReader = null;
104 FileReader fileReader = null;
105 try{
106 fileReader = new FileReader(path);
107 bufferedReader = new BufferedReader(fileReader);
108 StringBuffer buffer = new StringBuffer();
109 char[]tmp = new char[1024];
110 int n = 0;
111 do{
112 n = bufferedReader.read(tmp);
113 if(n > 0){
114 buffer.append(new String(tmp,0,n));
115 }
116 }
117 while(n == 1024);
118 return buffer.toString();
119 }
120 finally{
121 if(bufferedReader != null){
122 bufferedReader.close();
123 }
124 if(fileReader != null){
125 fileReader.close();
126 }
127 }
128 }
129
130 public String fileToString(String path, long numberOfLines)throws IOException, OpenSyncException {
131
132
133
134
135
136 String lineSeparator = System.getProperty("line.separator");
137 try{
138 if (startRead) {
139 fileReader = new FileReader(path);
140 bufferedReader = new LineNumberReader(fileReader);
141 startRead = false;
142 endOfFileReader = false;
143 currentLineNumber = 0;
144 }
145
146 int linesRead = 0;
147 String aLine = "";
148
149
150 int nl = 0;
151 StringBuffer buffer = new StringBuffer();
152 boolean stop = false;
153 while (!stop && nl < numberOfLines) {
154 aLine = bufferedReader.readLine();
155 if (Utils.debug == true) System.out.println("line read: "+aLine);
156 if (aLine == null) {
157 stop = true;
158 nl--;
159 } else {
160 buffer.append(aLine+lineSeparator);
161 }
162 nl++;
163 }
164 currentLineNumber += nl;
165 if (buffer.length() == 0) endOfFileReader = true;
166
167 if (endOfFileReader) {
168 if (bufferedReader != null) {
169 bufferedReader.close();
170 bufferedReader = null;
171 }
172 if (fileReader != null) {
173 fileReader.close();
174 fileReader = null;
175 }
176 currentLineNumber = 0;
177 endOfFileReader = false;
178 startRead = true;
179 return null;
180 }
181 return buffer.toString();
182 }
183 catch (IOException ioe) {
184 if(bufferedReader != null){
185 bufferedReader.close();
186 }
187 if(fileReader != null){
188 fileReader.close();
189 }
190
191 throw new OpenSyncException(ioe.getLocalizedMessage());
192 }
193 }
194 /***
195 * Write the <code>String str</code> in the file <code>path</code>
196 *
197 * @param str the String to write
198 * @param path path the absolute path of the file
199 * @exception IOException
200 */
201 public static void stringToFile(String str,String path)throws IOException{
202 FileWriter fileWriter = null;
203 try{
204 fileWriter = new FileWriter(path);
205 fileWriter.write(str);
206 }
207 finally{
208 if(fileWriter != null){
209 fileWriter.close();
210 }
211 }
212 }
213
214 public void stringAppendToFile(String str,String path)throws IOException{
215
216 String lineSeparator = System.getProperty("line.separator");
217
218 FileWriter fileWriter = null;
219 try{
220 if (startOfFileWriter) {
221 fileWriter = new FileWriter(path);
222 startOfFileWriter = false;
223 } else {
224 fileWriter = new FileWriter(path, true);
225 }
226 fileWriter.write(str+lineSeparator);
227 }
228 finally{
229 if(fileWriter != null){
230 fileWriter.flush();
231 fileWriter.close();
232 }
233 }
234 }
235 }