1 package com.iam.utils;
2
3 import java.io.DataOutputStream;
4 import java.io.File;
5 import java.io.FileNotFoundException;
6 import java.io.FileOutputStream;
7 import java.io.FileReader;
8 import java.io.IOException;
9 import java.io.LineNumberReader;
10 import java.util.LinkedList;
11 import java.util.Queue;
12
13 import com.iam.constants.CommonConsts;
14 import com.iam.constants.ToolConsts;
15 import com.iam.exceptions.MonitorException;
16
17 public class FileUtils {
18 /**
19 * @since 2017-06-28
20 */
21 public static void main(String[] args) throws MonitorException {
22 String filePath = FileUtils.class.getResource("/logs/log.txt").getPath();
23 System.out.println(filePath);
24 Queue<String> lines = readAppointedLines(new File(filePath), 1, 20);
25 for (String line : lines) {
26 System.out.println(line);
27 }
28 }
29
30 public static Queue<String> readLinesByFilters(String filter, File localFile) throws MonitorException {
31 if (!CommonUtils.isFile(localFile)) {
32 return null;
33 }
34 Queue<String> lines = new LinkedList<String>();
35 LineNumberReader lineReader = null;
36 FileReader fileReader = null;
37 try {
38 fileReader = new FileReader(localFile);
39 lineReader = new LineNumberReader(fileReader);
40 String text = lineReader.readLine();
41 String[] filters = filter.split(ToolConsts.DEFAULT_SPLITTER);
42 while (null != text) {
43 for (String filtor : filters) {
44 if (text.contains(filtor)) {
45 lines.add(text);
46 break;
47 }
48 }
49 text = lineReader.readLine();
50 }
51 } catch (FileNotFoundException e) {
52 e.printStackTrace();
53 throw new MonitorException("FileNotFoundException occured while read file. "+e.getMessage());
54 } catch (IOException e) {
55 e.printStackTrace();
56 throw new MonitorException("IOException occured while read file. "+e.getMessage());
57 } finally {
58 if (null != lineReader) {
59 try {
60 lineReader.close();
61 } catch (IOException e) {
62 e.printStackTrace();
63 }
64 }
65
66 if (null != fileReader) {
67 try {
68 fileReader.close();
69 } catch (IOException e) {
70 e.printStackTrace();
71 }
72 }
73 }
74 return lines;
75 }
76
77 public static Queue<String> readAppointedLines(File localFile, int from, int to) throws MonitorException {
78
79 if (CommonConsts.INT_ONE > from) {
80 from = CommonConsts.INT_ONE;
81 }
82 if (CommonConsts.INT_ONE > to) {
83 to = CommonConsts.INT_ONE;
84 }
85 if (from > to) {
86 int temp = to;
87 to = from;
88 from = temp;
89 }
90 if (!CommonUtils.isFile(localFile)) {
91 throw new MonitorException("Parameter File Object is NOT a File instance.");
92 }
93 return getFileQueue(localFile, from, to);
94 }
95
96 private static Queue<String> getFileQueue(File file, int from, int to) throws MonitorException {
97 Queue<String> queue = new LinkedList<String>();
98 if (!CommonUtils.isFile(file)) {
99 return null;
100 }
101 FileReader fileReader = null;
102 LineNumberReader lineReader = null;
103 try {
104 fileReader = new FileReader(file);
105 lineReader = new LineNumberReader(fileReader);
106 while (lineReader.getLineNumber() < from - 1) {
107 lineReader.readLine();
108 }
109 String text = lineReader.readLine();
110 do {
111 queue.offer(text);
112 from++;
113 text = lineReader.readLine();
114 } while (from < to && null != text);
115 } catch (FileNotFoundException e) {
116 e.printStackTrace();
117 throw new MonitorException("FileNotFoundException occured while read file. " + e.getMessage());
118 } catch (IOException e) {
119 e.printStackTrace();
120 throw new MonitorException("IOException occured while read file. " + e.getMessage());
121 }finally {
122 if (null != lineReader) {
123 try {
124 lineReader.close();
125 } catch (IOException e) {
126 e.printStackTrace();
127 }
128 }
129
130 if (null != fileReader) {
131 try {
132 fileReader.close();
133 } catch (IOException e) {
134 e.printStackTrace();
135 }
136 }
137 }
138 return queue;
139 }
140
141 public static void write2File(String filePath, String content) throws Exception {
142 if (CommonUtils.isNotEmpty(filePath) && CommonUtils.isNotEmpty(content)) {
143 File file = new File(filePath);
144 if (CommonUtils.isFile(file)
145 || (CommonUtils.isNotDirectory(file) && CommonUtils.isDirectory(file.getParentFile()))) {
146 DataOutputStream output = new DataOutputStream(new FileOutputStream(file, true));
147 output.write(content.getBytes());
148 output.write("\r\n".getBytes());
149 output.close();
150 }
151
152 }
153 }
154
155 public static void deleteAllFiles(String Path) throws Exception {
156 if (CommonUtils.isNotEmpty(Path)) {
157 File file = new File(Path);
158 if (file.isDirectory()) {
159 File[] files = file.listFiles();
160 for (int i = 0; i < files.length; i++) {
161 if (files[i].isFile())
162 files[i].delete();
163 }
164 }
165 }
166
167 }
168
169 }