質問編集履歴

3

実行結果の説明強化

2015/12/21 09:12

投稿

javabigineer
javabigineer

スコア87

test CHANGED
File without changes
test CHANGED
@@ -13,6 +13,10 @@
13
13
  説明不足で申し訳ありません。Apach CommonsのFTPClientのことです。
14
14
 
15
15
  Java1.6 commons-net3.4.jarです
16
+
17
+ 以下の処理では「結果ファイル」というログファイルとtar.gzファイルを受信しています。ログファイルはFTP成功していますが、tar.gzファイルが0バイトになっています。
18
+
19
+
16
20
 
17
21
  以下ソースコード(一部抜粋)
18
22
 

2

ソース修正

2015/12/21 09:12

投稿

javabigineer
javabigineer

スコア87

test CHANGED
File without changes
test CHANGED
@@ -92,31 +92,9 @@
92
92
 
93
93
  StringBuilder rsb = new StringBuilder(tmp);
94
94
 
95
- //資源種別名フォルダの生成
95
+ File exporesult = new File(rsb.append(CheckResult.EXPORTRESULT).toString());
96
96
 
97
- if (i == 0) {
98
97
 
99
- resourceClass = "NHD";
100
-
101
- tmp = rsb.append(resourceClass+"\\\\").toString();
102
-
103
- } else if (i == 1) {
104
-
105
- resourceClass = "NHA";
106
-
107
- tmp = rsb.append(resourceClass+"\\\\").toString();
108
-
109
- }
110
-
111
- File exporesult = new File(rsb.append(CheckResult.EXPORTRESULT).toString());
112
-
113
- //同一ファイルが既に存在していた場合削除
114
-
115
- fUtil.Deletefile(exporesult);
116
-
117
- //出力ファイル作成
118
-
119
- fUtil.makefile(tmp, exporesult);
120
98
 
121
99
  os = new FileOutputStream(exporesult);// クライアント側
122
100
 

1

バージョンの追記、ソースコードの追記

2015/12/21 02:48

投稿

javabigineer
javabigineer

スコア87

test CHANGED
File without changes
test CHANGED
@@ -5,3 +5,195 @@
5
5
  OutputStreamもflushを行っていますが、受信ファイルが0バイトになってしまいます。
6
6
 
7
7
  なにか他に考えられる原因はないでしょうか?
8
+
9
+
10
+
11
+ 追記
12
+
13
+ 説明不足で申し訳ありません。Apach CommonsのFTPClientのことです。
14
+
15
+ Java1.6 commons-net3.4.jarです
16
+
17
+ 以下ソースコード(一部抜粋)
18
+
19
+ String ftpconnect = "IP"
20
+
21
+ System.out.println(ftpconnect + "に接続します");
22
+
23
+ System.out.println(ftpport);
24
+
25
+ try {
26
+
27
+ // 接続先に接続する
28
+
29
+ fp.connect(ftpconnect,ftpport);
30
+
31
+ if (!FTPReply.isPositiveCompletion(fp.getReplyCode())) { // コネクトできたか?
32
+
33
+ // 失敗した場合
34
+
35
+ System.out.println("connection failed");
36
+
37
+ }
38
+
39
+
40
+
41
+ //==== タイムアウト時間設定 ====//
42
+
43
+ fp.setSoTimeout(1200000); //20分
44
+
45
+ // 接続先にユーザ名指定してログインする
46
+
47
+ if (fp.login(loginuser, password) == false) { // ログインできたか?
48
+
49
+ // 失敗した場合
50
+
51
+ System.out.println("login failed");
52
+
53
+ }
54
+
55
+
56
+
57
+ //==== 転送モード設定 ====//
58
+
59
+ fp.setFileType(FTP.BINARY_FILE_TYPE);
60
+
61
+ fp.enterLocalPassiveMode();
62
+
63
+
64
+
65
+ // 指定ディレクトリ内のファイル名を全取得
66
+
67
+ String[] flist = fp.listNames(sv_input);
68
+
69
+ String resultchk = "";
70
+
71
+ try{
72
+
73
+ //結果ファイル存在チェック
74
+
75
+ resultchk = resc.resultCheck(flist);
76
+
77
+ System.out.println(resultchk);
78
+
79
+ }catch(NullPointerException e){
80
+
81
+ System.out.println("ファイルが存在しません。");
82
+
83
+ }
84
+
85
+ // ファイルが存在する場合
86
+
87
+ if (!resultchk.isEmpty()) {
88
+
89
+ //ファイル受信
90
+
91
+ String tmp = work;
92
+
93
+ StringBuilder rsb = new StringBuilder(tmp);
94
+
95
+ //資源種別名フォルダの生成
96
+
97
+ if (i == 0) {
98
+
99
+ resourceClass = "NHD";
100
+
101
+ tmp = rsb.append(resourceClass+"\\\\").toString();
102
+
103
+ } else if (i == 1) {
104
+
105
+ resourceClass = "NHA";
106
+
107
+ tmp = rsb.append(resourceClass+"\\\\").toString();
108
+
109
+ }
110
+
111
+ File exporesult = new File(rsb.append(CheckResult.EXPORTRESULT).toString());
112
+
113
+ //同一ファイルが既に存在していた場合削除
114
+
115
+ fUtil.Deletefile(exporesult);
116
+
117
+ //出力ファイル作成
118
+
119
+ fUtil.makefile(tmp, exporesult);
120
+
121
+ os = new FileOutputStream(exporesult);// クライアント側
122
+
123
+ System.out.println(resultchk);
124
+
125
+ fp.retrieveFile(resultchk, os);// サーバー側
126
+
127
+ System.out.println("抜出結果ファイル FTP GET COMPLETED");
128
+
129
+ // 結果ファイル内に"OK"の記述がある場合
130
+
131
+ if (resc.resultContents(exporesult)) {
132
+
133
+ System.out.println("抜出結果:OK");
134
+
135
+ // FTP転送実行
136
+
137
+ if (ftpflg.equals("rec")) { // ftpflg=rec(受信)
138
+
139
+ // ファイル受信
140
+
141
+ String inputfile = "";
142
+
143
+ for (int j = 0; j < flist.length; j++) { inputfile = flist[j];
144
+
145
+ if (inputfile.indexOf(".tar.gz") != -1) { // tar.gzファイルのみFTP転送実行
146
+
147
+ //転送対象のファイル名のみ取得
148
+
149
+ inputfile = inputfile.substring(inputfile.lastIndexOf("/"));
150
+
151
+ //転送対象ファイルパス生成
152
+
153
+ inputfile = clsb.append(inputfile).toString();
154
+
155
+ File input = new File(inputfile);
156
+
157
+ //同一ファイルが既に存在していた場合削除
158
+
159
+ fUtil.Deletefile(input);
160
+
161
+ //出力ファイル作成
162
+
163
+ fUtil.makefile(dir, input);
164
+
165
+ os = new FileOutputStream(input);// クライアント側
166
+
167
+ fp.retrieveFile(sv_input, os);// サーバー側
168
+
169
+ os.flush();
170
+
171
+ os.close();
172
+
173
+ System.out.println("FTP GET COMPLETED");
174
+
175
+ } else {
176
+
177
+ System.out.println("対象圧縮資産は存在しません。");
178
+
179
+ continu
180
+
181
+ }
182
+
183
+ } }
184
+
185
+ } else { System.out.println("対象圧縮資産は存在しません。");
186
+
187
+ //tar.gzファイル以外はスキップ
188
+
189
+ continue;
190
+
191
+ }
192
+
193
+ }
194
+
195
+ }
196
+
197
+
198
+
199
+ }