View Javadoc

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    public void setBufferedReader(LineNumberReader _bufferedReader) {
25      this.bufferedReader = _bufferedReader;
26    }
27  
28    public LineNumberReader getBufferedReader() {
29      return null;
30    }
31  
32  
33    public void setFileReader(FileReader _fileReader) {
34      this.fileReader = _fileReader;
35    }
36  
37    public FileReader getFileReader() {
38      return this.fileReader;
39    }
40  
41    public void setCurrentLineNumber(int _currentLineNumber) {
42      this.currentLineNumber = _currentLineNumber;
43    }
44  
45    public void setEndOfFileReader(boolean _endOfFileReader) {
46      //this.endOfFileReader = _endOfFileReader;
47      this.endOfFileReader = false;
48    }
49  
50    public void setStartRead(boolean _startRead) {
51      //this.startRead = _startRead;
52      this.startRead = true;
53    }
54  
55    public void setStartOfFileWriter(boolean _startOfFileWriter) {
56      this.startOfFileWriter = _startOfFileWriter;
57    }
58  
59    public int getCurrentLineNumber() {
60      return this.currentLineNumber;
61    }
62  
63    public boolean getEndOfFileReader() {
64      //return this.endOfFileReader;
65      return false;
66    }
67  
68  
69    public boolean getStartRead() {
70      //return this.startRead;
71      return true;
72    }
73  
74  
75    public boolean getStartOfFileWriter() {
76      return this.startOfFileWriter;
77    }
78    */
79  
80    /***
81     * Contruct a FileHelper, not needed, use static methods instead
82     *
83     */
84    public FileHelper() {
85        this.startRead = true;
86         // Value max: 2 147 483 647
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     LineNumberReader bufferedReader = null;
134     FileReader fileReader = null;
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       //return null;
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 }