質問編集履歴

3

2017/12/22 01:16

投稿

say5140
say5140

スコア12

test CHANGED
File without changes
test CHANGED
@@ -270,6 +270,18 @@
270
270
 
271
271
  ```
272
272
 
273
+
274
+
275
+ 呼び出し側の例外時のStackTrace
276
+
277
+ オブジェクト参照がオブジェクト インスタンスに設定されていません。
278
+
279
+ 場所 xxxx.InitProcess()
280
+
281
+ 場所 呼び出し側の関数名
282
+
283
+
284
+
273
285
  現在、コンソールアプリケーション側で例外をキャッチし、リターンコード99で終了しています。
274
286
 
275
287
  メッセージは「オブジェクト参照がオブジェクト インスタンスに設定されていません。」です。

2

2017/12/22 01:16

投稿

say5140
say5140

スコア12

test CHANGED
File without changes
test CHANGED
@@ -118,6 +118,158 @@
118
118
 
119
119
  ```
120
120
 
121
+ ```C#
122
+
123
+ ファイルの削除(再帰呼び出し)
124
+
125
+ public static void DeleteOldLog(string dirPath, int limitSize)
126
+
127
+ {
128
+
129
+ if (!Directory.Exists(dirPath))
130
+
131
+ {
132
+
133
+ return;
134
+
135
+ }
136
+
137
+
138
+
139
+ //現在のファイル容量を取得
140
+
141
+ var size = GetLogDirSize(dirPath);
142
+
143
+ if (size < limitSize)
144
+
145
+ {
146
+
147
+ return;
148
+
149
+ }
150
+
151
+
152
+
153
+ DirectoryInfo logDirInfo = new DirectoryInfo(dirPath);
154
+
155
+ var files = logDirInfo.EnumerateFiles("*", SearchOption.TopDirectoryOnly).ToArray();
156
+
157
+
158
+
159
+ if (files.Length == 0)
160
+
161
+ {
162
+
163
+ return;
164
+
165
+ }
166
+
167
+ else
168
+
169
+ {
170
+
171
+ //ファイル日付の昇順でソート
172
+
173
+ var sortFiles = from file in files
174
+
175
+ orderby file.LastWriteTime
176
+
177
+ select file.FullName;
178
+
179
+
180
+
181
+ int dtLen = 14; //yyyyMMddHHmmss
182
+
183
+
184
+
185
+ //ファイル名のタイムスタンプを見つける
186
+
187
+ string timeStamp = string.Empty;
188
+
189
+ foreach (var file in sortFiles)
190
+
191
+ {
192
+
193
+ var fileName = Path.GetFileNameWithoutExtension(file);
194
+
195
+ if (fileName.Length >= dtLen)
196
+
197
+ {
198
+
199
+ //拡張子より前14ケタを取得
200
+
201
+ var stIndex = fileName.Length - dtLen; //開始インデックス
202
+
203
+ timeStamp = fileName.Substring(stIndex, dtLen);
204
+
205
+
206
+
207
+ //日付形式か
208
+
209
+ if (IsDateTime(timeStamp))
210
+
211
+ {
212
+
213
+ //日付形式であれば採用
214
+
215
+ break;
216
+
217
+ }
218
+
219
+ else
220
+
221
+ {
222
+
223
+ timeStamp = string.Empty;
224
+
225
+ }
226
+
227
+ }
228
+
229
+ }
230
+
231
+
232
+
233
+ //該当なしの場合
234
+
235
+ if (timeStamp.Length == 0)
236
+
237
+ {
238
+
239
+ return;
240
+
241
+ }
242
+
243
+
244
+
245
+ //タイムスタンプでファイル検索
246
+
247
+ var search = "*" + timeStamp + "*";
248
+
249
+ var delFiles = logDirInfo.EnumerateFiles(search, SearchOption.TopDirectoryOnly).ToArray();
250
+
251
+ foreach (var file in delFiles)
252
+
253
+ {
254
+
255
+ //ファイル削除
256
+
257
+ File.Delete(file.FullName);
258
+
259
+ }
260
+
261
+
262
+
263
+ //再帰実行し最大容量を下回るまで繰り返す
264
+
265
+ DeleteOldLog(dirPath, limitSize);
266
+
267
+ }
268
+
269
+ }
270
+
271
+ ```
272
+
121
273
  現在、コンソールアプリケーション側で例外をキャッチし、リターンコード99で終了しています。
122
274
 
123
275
  メッセージは「オブジェクト参照がオブジェクト インスタンスに設定されていません。」です。

1

2017/12/22 01:11

投稿

say5140
say5140

スコア12

test CHANGED
File without changes
test CHANGED
File without changes