-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathQueryFiles.cs
More file actions
143 lines (139 loc) · 4.67 KB
/
Copy pathQueryFiles.cs
File metadata and controls
143 lines (139 loc) · 4.67 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Collections;
namespace rmcode
{
class QueryFiles
{
public static string outdir = "";
public static string keystr = "";
public static Stack st = new Stack();
public static void getFiles(string path)
{
string[] strFileNames = Directory.GetFiles(path);
string[] strDirectories = Directory.GetDirectories(path);
foreach (string filename in strFileNames)
{
if (filename.EndsWith(".java"))
{
QueryFileApi(filename);
}
}
foreach (string dir in strDirectories)
{
Console.WriteLine("DirectoriesName:{0}", dir);
getFiles(dir);
}
}
public static void QueryFileApi(string fileName)
{
Console.WriteLine(fileName);
Directory.CreateDirectory(Path.Combine(outdir, Path.GetDirectoryName(fileName)));
st.Clear();
try
{
FileStream aFile = new FileStream(fileName, FileMode.Open);
StreamReader sr = new StreamReader(aFile);
var utf8WithoutBom = new System.Text.UTF8Encoding(false);
StreamWriter sw = new StreamWriter(Path.Combine(outdir, fileName), false, utf8WithoutBom);
string line = null;
string rmemptyline = null;
while ((line = sr.ReadLine()) != null)
{
rmemptyline = line.Trim();
if (rmemptyline.StartsWith(keystr))
{
st.Clear();
while (true)
{
StOp(rmemptyline);
if (st.Count == 0 && rmemptyline.EndsWith(";"))
{
//说明这一句是一个完整的语法, 什么也不做,不再把这句写到新文件.
break;
}
else
{
//说明换行了,再重新读一行
line = sr.ReadLine();
if (line != null)
{
rmemptyline = line.Trim();
}
else
{
rmemptyline = null;
}
}
}
}
else
{
sw.WriteLine(line);
sw.Flush();
}
}
sr.Close();
aFile.Close();
sw.Close();
}
catch (System.Exception ex)
{
Console.WriteLine(fileName + ex.Message);
}
}
public static void StOp(string rmemptyline)
{
if (rmemptyline == null) return;
int i = 0;
for (i = 0; i < rmemptyline.Length; i++)
{
if (rmemptyline[i] == '(')
{
if (st.Count == 0 || st.Peek().Equals("("))
{
st.Push("(");
}
}
else if (rmemptyline[i] == '\"')
{
if (i == 0)
{
if (st.Peek().Equals("\""))
{
st.Pop();
}
else
{
st.Push("\"");
}
}
else
{
if (rmemptyline[i - 1] != ('\\'))
{
if (st.Peek().Equals("\""))
{
st.Pop();
}
else
{
st.Push("\"");
}
}
}
}
else if (rmemptyline[i] == ')')
{
if (st.Peek().Equals("("))
{
st.Pop();
}
}
}
}
}
}