1 /**
2 * 文件操作工具类
3 * @author fengbo
4 *@modify by wangzh date:2010-4-13 content:add synchronized for method
5 */
6 public class FileUtil implements Serializable {
7
8 private static final long serialVersionUID = 1L;
9
10 /**
11 * 创建文件
12 * @author fengbo
13 * @param filePath
14 * @return
15 */
16 public static synchronized java.io.File createFile(String filePath){
17 try{
18 java.io.File f = new java.io.File(filePath);
19 if(!f.exists()){
20 f.createNewFile();
21 }
22 return f;
23 }catch(Exception e){
24 return null;
25 }
26 }
27 /**
28 * 创建目录
29 * @param filePath
30 * @return
31 */
32 public static synchronized boolean createMkdir(String mkdirPath){
33 try{
34 java.io.File f = new java.io.File(mkdirPath);
35 if(!f.exists()){
36 return f.mkdirs();
37 }
38 return true;
39 }catch(Exception e){
40 return false;
41 }
42 }
43 /**
44 * 删除文件
45 * @author fengbo
46 * @param filePath
47 * @return
48 */
49 public static synchronized int delFile(String filePath){
50 try{
51 java.io.File f = new java.io.File(filePath);
52 if(f.exists()){
53 f.delete();
54 return 1;
55 }else{
56 return 1;
57 }
58 }catch(Exception e){
59 return 0;
60 }
61 }
62 /**
63 * 判断一个指定路径是否是目录
64 * @param filePath
65 * @return
66 */
67 public static boolean IsDirectory(String filePath){
68 // 实例化File类的对象
69 java.io.File f = new java.io.File(filePath);
70 if(f.isDirectory()) {
71 System.out.println("路径是目录");//如果是文件夹(Midir)
72 return true;
73 }else
74 System.out.println("路径不是目录"); //不是文件夹
75 return false;
76 }
77 /**
78 * 判断一个指定路径下的所有文件
79 * @param filePath
80 * @return
81 */
82 public static String[] getList(String filePath){
83 // 实例化File类的对象
84 java.io.File f = new java.io.File(filePath);
85 String list[] = f.list();
86 for(int i=0;i<list.length;i++)
87 System.out.println(list[i]);
88 return list;
89 }
90 /**
91 * 获得文件中的内容
92 * @param filePath
93 * @return
94 */
95 public static String readFile(java.io.File file){
96 StringBuffer sb = new StringBuffer();
97 String str = "";
98 try {
99 FileReader fr = new java.io.FileReader(file);
100 java.io.BufferedReader red = new java.io.BufferedReader(fr);
101 while((str = red.readLine())!=null){
102 sb.append(str+"\n");
103 }
104 red.close();
105 fr.close();
106
107 } catch (Exception e) {
108 e.printStackTrace();
109 }
110
111 return sb.toString();
112 }
113 /**
114 * 读取一个文件如果是目录,则显示该目录下所有文件的名称;如果是文件,则显示此文件内容
115 * @param filePath
116 * @return
117 */
118 public static void readFileOrDir(String filePath){
119 //File f = new File("d:"+File.separator+"FileWork.java");
120 File f = new File(filePath);
121 if(f.isDirectory()){ //判断是否是文件的一个目录(文件夹)
122 System.out.println("路径是目录!");
123 String str[] = f.list();
124 for(int i=0;i<str.length;i++){
125 System.out.println(str[i]);
126 }
127 }else if(f.isFile()){ //判断是否是标准文件
128 int b = 0;
129 FileInputStream fis =null;
130 BufferedInputStream bis= null;
131 try{
132 fis = new FileInputStream(f);
133 bis = new BufferedInputStream(fis);
134 while((b=bis.read())!=-1){
135 System.out.print((char)b);
136 }
137 }catch(FileNotFoundException e){
138 e.printStackTrace();
139 }
140 catch(IOException e){
141 e.printStackTrace();
142 }finally{
143 try{
144 if(bis!=null){
145 bis.close();
146 }
147 }catch(IOException e){
148 e.printStackTrace();
149 }
150 }
151 }
152 }
153
154
155 public static synchronized int writeFile(java.io.File file,String writeStr,String Encoding)
156 {
157 try {
158 java.io.FileOutputStream outStream = new java.io.FileOutputStream(file);
159 outStream.write(writeStr.getBytes(Encoding));
160
161 outStream.flush();
162 outStream.close();
163 return 1;
164 } catch (Exception e) {
165 e.printStackTrace();
166 return 0;
167 }
168
169 }
170 /**
171 * 写入文件
172 * @param file
173 * @param writeStr
174 * @return
175 * @modify by wangzc . date:2010-4-13 add return values;
176 */
177 public static synchronized int writeFile(java.io.File file,String writeStr){
178 try {
179 java.io.FileOutputStream outStream = new java.io.FileOutputStream(file);
180 outStream.write(writeStr.getBytes());
181
182 outStream.flush();
183 outStream.close();
184 return 1;
185 } catch (Exception e) {
186 e.printStackTrace();
187 return 0;
188 }
189
190 }
191 /**
192 * 以追加方式写入文件
193 * @param file
194 * @param writeStr
195 * @return
196 */
197 public static synchronized int writeFileAdd(java.io.File file,String writeStr){
198 try {
199 FileWriter fw = new FileWriter(file,true);
200 fw.write(writeStr+"\r\n");
201 fw.flush();
202 fw.close();
203 //java.io.FileOutputStream outStream = new java.io.FileOutputStream(file);
204 //outStream.write(writeStr.getBytes());
205 } catch (Exception e) {
206
207 e.printStackTrace();
208 }
209 return 0;
210 }
211 /**
212 * 给文件加锁
213 * @author fengbo
214 * @param file
215 * @return
216 */
217 public static FileLock lockFie(java.io.File file){
218 try {
219 RandomAccessFile raf = new RandomAccessFile(file, "rw"); //r ,rw ,rwd 三个可选参数
220 FileChannel fc = raf.getChannel();
221 FileLock fl = fc.tryLock();
222 return fl;
223 } catch (Exception e) {
224 e.printStackTrace();
225 return null;
226 }
227
228 }
229 /**
230 * 释放文件锁
231 * @param fl
232 */
233 public static void freeLock(FileLock fl){
234 try{
235 if(null!=fl){
236 fl.release();
237 }
238 }catch(Exception e){
239
240 }
241 }
242 /**
243 * 文件上传
244 * @param request
245 * @param response
246 * @return
247 *//*
248 public static boolean uploadfile(FormFile myFile,String filepath){
249 if(myFile==null){System.out.println("上传文件为空。。。");return false;}
250 try{
251 FileUtil.createFile(filepath+myFile.getFileName());
252 FileOutputStream fos = new FileOutputStream(filepath+myFile.getFileName());
253 fos.write(myFile.getFileData());
254 fos.flush();
255 fos.close();
256 }catch(Exception e){
257 return false;
258 }
259 return true;
260 }*/
261 /**
262 * 文件下载
263 * @param request
264 * @param response
265 * @param path 文件绝对路径 /tmp/tool.exe
266 * @return
267 *//*
268 public static boolean downloadFile(HttpServletRequest request,HttpServletResponse response,String path){
269 String filename = "";
270 String fileminitype = "text/plain";
271 try {
272 java.io.File f = new java.io.File(path);
273 if(f==null){System.out.println("file 为空");return false;}
274 filename =f.getName();
275 System.out.println("filename ============="+filename);
276 response.setContentType(fileminitype);
277 response.setHeader("Location", filename);
278 response.setHeader("Content-Disposition", "attachment; filename="+ filename);
279 OutputStream outputStream = response.getOutputStream();
280 InputStream inputStream = new FileInputStream(f);
281 byte[] buffer = new byte[1024];
282 int i = -1;
283 while ((i = inputStream.read(buffer)) != -1) {
284 outputStream.write(buffer, 0, i);
285 }
286 outputStream.flush();
287 outputStream.close();
288 inputStream.close();
289 outputStream = null;
290 return true;
291 } catch (Exception e) {
292 return false;
293 }
294
295 }*/
296 /**
297 * 判断文件是否存在
298 * @param filePath
299 * @return
300 */
301 public static boolean checkFileEx(String filePath){
302 try{
303 java.io.File f = new java.io.File(filePath);
304 return f.exists();
305 }catch(Exception e){
306 return false;
307 }
308
309 }
310 /**
311 * 更新文件 参数均不能为空
312 *
313 * @param file
314 * 文件
315 * @param key
316 * 文件中的key 形如 key=value
317 * @param newStr
318 * 将key=value中的“value” 替换为newStr
319 * @return
320 */
321 public static boolean upFileContent(java.io.File file, String key,
322 String newStr) {
323 if (file == null || null == key || newStr == null) {
324 return false;
325 }
326 try {
327 String str = readFile(file);
328 String targetStr = "";
329 String[] strss = str.split("\n");
330 for (String s : strss) {
331 if (key.equals(s.split("=")[0])) {
332 targetStr = s.split("=")[1].trim();
333 }
334 }
335 // 替换
336 String nstr = str.replaceAll(targetStr, newStr);
337 writeFile(file, nstr);
338 } catch (Exception e) {
339 e.printStackTrace();
340 return false;
341 }
342 return true;
343 }
344 /**
345 * 根据key 获得值 若对应的key 没有值则返回 null
346 * @param file
347 * @param keys
348 * @return
349 */
350 public static String[] getValuesByKeys(java.io.File file,String[] keys){
351 if (file == null || null == keys || keys.length == 0) {
352 return null;
353 }
354 try {
355 String str = readFile(file);
356 String[] rs = new String[keys.length];
357 String[] strss = str.split("\n");
358 for(int i=0;i<keys.length;i++){
359 for (String s : strss) {
360 if (keys[i].equals(s.split("=")[0])) {
361 if(s.split("=").length>1){
362 rs[i] = (s.split("=")[1].trim());
363 }else{
364 rs[i] = "";
365 }
366
367 }
368 }
369 }
370
371 return rs;
372 } catch (Exception e) {
373 e.printStackTrace();
374 return null;
375 }
376
377
378 }
379 /**
380 * 根据键获得值 若无 返回 空字符串
381 * @param file
382 * @param key
383 * @return
384 */
385 public static String getValueByKey(java.io.File file,String key){
386 if (file == null || null == key || key.length()==0) {
387 return "";
388 }
389 String[] rs = getValuesByKeys(file ,new String[]{key});
390 if(null!=rs&&rs.length!=0){
391 return rs[0];
392 }else{
393 return "";
394 }
395 }
396
397 /**
398 * @param args
399 */
400 public static void main(String[] args) {
401 // FileUtil fu = new FileUtil();
402 // boolean createmkdir = fu.createMkdir("D:/usr/local/centreon/filesGeneration/nagiosCFG/"+2);
403 // if(createmkdir){
404 // java.io.File file = FileUtil.createFile("D:/usr/local/centreon/filesGeneration/nagiosCFG/"+2+"/ssmtp.conf");
405 // StringBuffer sb = new StringBuffer();
406 // sb.append("hostname=ebondservice@126.com \n");
407 // sb.append("AuthUser=ebondservice@126.com \n");
408 // sb.append("AuthPass=djpf8888 \n");
409 // sb.append("mailhub=smtp.126.com \n");
410 // FileUtil.writeFile(file, sb.toString());//写入文件
411 //
412 //
413 //// FileUtil.writeFileAdd(file, "AuthUser=ebondservice@126.com \n");//写入文件
414 //// FileUtil.writeFileAdd(file, "AuthPass=djpf8888 \n");//写入文件
415 //// FileUtil.writeFileAdd(file, "mailhub=smtp.126.com \n");//写入文件
416 // String str = fu.readFile(file);
417 // String[] infos = str.split("\n");
418 // for(String s:infos){
419 // System.out.println(s);
420 // }
421 //System.out.println("=="+str);
422 // }
423
424
425 }
426
427 }