質問編集履歴
5
質問内容の変更
test
CHANGED
File without changes
|
test
CHANGED
@@ -54,7 +54,7 @@
|
|
54
54
|
|
55
55
|
|
56
56
|
|
57
|
-
### Logcat Android
|
57
|
+
### Logcat Android
|
58
58
|
|
59
59
|
|
60
60
|
|
@@ -88,7 +88,7 @@
|
|
88
88
|
|
89
89
|
|
90
90
|
|
91
|
-
### ソースコード Android
|
91
|
+
### ソースコード Android
|
92
92
|
|
93
93
|
|
94
94
|
|
@@ -262,7 +262,7 @@
|
|
262
262
|
|
263
263
|
|
264
264
|
|
265
|
-
###変更後 Android
|
265
|
+
###変更後 Android
|
266
266
|
|
267
267
|
```java
|
268
268
|
|
@@ -418,7 +418,7 @@
|
|
418
418
|
|
419
419
|
```
|
420
420
|
|
421
|
-
###変更後 Logcat一部 Android
|
421
|
+
###変更後 Logcat一部 Android
|
422
422
|
|
423
423
|
```
|
424
424
|
|
4
質問に関係ないこと削除
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,12 +1,14 @@
|
|
1
|
-
###
|
1
|
+
### バイト配列のデータを書き込み後、再度アクセスしたい
|
2
|
-
|
3
|
-
|
4
|
-
|
2
|
+
|
3
|
+
|
4
|
+
|
5
|
-
|
5
|
+
画像(jpg)をAndroidで受信するプログラムを書いています。
|
6
|
+
|
6
|
-
|
7
|
+
画像の受信にはうまくいっていますが受信したデータの書き込み、読み込みにうまくいっていません。
|
7
|
-
|
8
|
-
|
8
|
+
|
9
|
+
|
10
|
+
|
9
|
-
画像
|
11
|
+
画像を書き込む場所のファイル一覧を
|
10
12
|
|
11
13
|
```
|
12
14
|
|
@@ -16,9 +18,13 @@
|
|
16
18
|
|
17
19
|
で取得できていません。
|
18
20
|
|
21
|
+
|
22
|
+
|
19
23
|
受信側の端末がAndroid 12(API31)のためパス(/storage/emulated/0/DCIM/Camera)を指定したアクセスができないのだと思います。
|
20
24
|
|
25
|
+
|
26
|
+
|
21
|
-
しかし、なぜ画像の書き込み
|
27
|
+
しかし、なぜ画像の書き込みはうまくいっているのかわかりません。また、
|
22
28
|
|
23
29
|
/storage/emulated/0/DCIM/Cameraはカメラで撮影した写真が保存されるディレクトリでフォトで表示されるはずですが、表示できずファイルエクスプローラーでしか確認できません。
|
24
30
|
|
@@ -32,11 +38,9 @@
|
|
32
38
|
|
33
39
|
|
34
40
|
|
35
|
-
・受信した
|
41
|
+
・受信したデータ(バイト配列)を書き込みたい
|
36
|
-
|
42
|
+
|
37
|
-
・
|
43
|
+
・書き込んだディレクトリ直下のファイル一覧を取得したい
|
38
|
-
|
39
|
-
(今回は画像転送→一覧取得ですが、将来的にClientからServerへファイル一覧を送りClientが持っていない画像をServerからClientへ送りたいと考えているためです。)
|
40
44
|
|
41
45
|
|
42
46
|
|
@@ -234,280 +238,186 @@
|
|
234
238
|
|
235
239
|
```
|
236
240
|
|
241
|
+
|
242
|
+
|
243
|
+
![イメージ説明](fd283ce4d21193c63064ada47e1b0cda.png)
|
244
|
+
|
245
|
+
# 試したこと
|
246
|
+
|
247
|
+
Android(Client)側のアプリ固有のディレクトリのパスを
|
248
|
+
|
249
|
+
String path = context.getFilesDir().getPath()
|
250
|
+
|
251
|
+
で取得しています。
|
252
|
+
|
253
|
+
|
254
|
+
|
255
|
+
この場合だと受信データを書き込んだ後に
|
256
|
+
|
257
|
+
File[] dataFiles = dir.listFiles()
|
258
|
+
|
259
|
+
でファイルの一覧を取得できています。アプリの固有のため受信した画像を確認することができていません
|
260
|
+
|
261
|
+
|
262
|
+
|
263
|
+
|
264
|
+
|
237
|
-
###
|
265
|
+
###変更後 Android(Client)側
|
238
266
|
|
239
267
|
```java
|
240
268
|
|
269
|
+
import androidx.appcompat.app.AppCompatActivity;
|
270
|
+
|
271
|
+
|
272
|
+
|
273
|
+
import android.content.Context;
|
274
|
+
|
275
|
+
import android.os.Bundle;
|
276
|
+
|
277
|
+
import android.util.Log;
|
278
|
+
|
279
|
+
|
280
|
+
|
281
|
+
import java.io.File;
|
282
|
+
|
241
|
-
import java.io.File
|
283
|
+
import java.io.FileOutputStream;
|
242
284
|
|
243
285
|
import java.io.InputStream;
|
244
286
|
|
245
287
|
import java.io.OutputStream;
|
246
288
|
|
247
|
-
import java.net.ServerSocket;
|
248
|
-
|
249
289
|
import java.net.Socket;
|
250
290
|
|
251
291
|
|
252
292
|
|
253
|
-
public class
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
|
269
|
-
|
270
|
-
|
271
|
-
|
272
|
-
|
273
|
-
|
274
|
-
|
275
|
-
|
276
|
-
|
277
|
-
i
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
|
282
|
-
|
283
|
-
|
284
|
-
|
285
|
-
|
286
|
-
|
287
|
-
|
288
|
-
|
289
|
-
|
290
|
-
|
291
|
-
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
-
|
296
|
-
|
297
|
-
|
298
|
-
|
299
|
-
|
300
|
-
|
301
|
-
|
302
|
-
|
303
|
-
|
304
|
-
|
305
|
-
|
293
|
+
public class MainActivity extends AppCompatActivity {
|
294
|
+
|
295
|
+
|
296
|
+
|
297
|
+
public static Socket socket = null;
|
298
|
+
|
299
|
+
public static String host = "192.168.11.2";
|
300
|
+
|
301
|
+
public static int port = 2001;
|
302
|
+
|
303
|
+
|
304
|
+
|
305
|
+
@Override
|
306
|
+
|
307
|
+
protected void onCreate(Bundle savedInstanceState) {
|
308
|
+
|
309
|
+
super.onCreate(savedInstanceState);
|
310
|
+
|
311
|
+
setContentView(R.layout.activity_main);
|
312
|
+
|
313
|
+
|
314
|
+
|
315
|
+
new Thread (new Runnable(){
|
316
|
+
|
317
|
+
public void run(){
|
318
|
+
|
319
|
+
|
320
|
+
|
321
|
+
String outputFilePath = null;
|
322
|
+
|
323
|
+
|
324
|
+
|
325
|
+
InputStream inputStream = null;
|
326
|
+
|
327
|
+
FileOutputStream fileOutputstream = null;
|
328
|
+
|
329
|
+
//OutputStream outputStream = null;
|
330
|
+
|
331
|
+
|
332
|
+
|
333
|
+
int fileLength = 0;
|
334
|
+
|
335
|
+
byte[] buffer = new byte[512];
|
336
|
+
|
337
|
+
|
338
|
+
|
339
|
+
try {
|
340
|
+
|
341
|
+
|
342
|
+
|
343
|
+
socket = new Socket(host, port);
|
344
|
+
|
345
|
+
inputStream = socket.getInputStream();
|
346
|
+
|
347
|
+
|
348
|
+
|
349
|
+
Context context = getApplicationContext();//変更箇所
|
350
|
+
|
351
|
+
String path = context.getFilesDir().getPath();//変更箇所
|
352
|
+
|
353
|
+
outputFilePath =path +"/receive_image.jpg";//変更箇所
|
354
|
+
|
355
|
+
Log.d("debug","path:"+path);
|
356
|
+
|
357
|
+
Log.d("debug","outputFilePath:"+outputFilePath);
|
358
|
+
|
359
|
+
|
360
|
+
|
361
|
+
fileOutputstream = new FileOutputStream(outputFilePath);
|
362
|
+
|
363
|
+
//outputStream = new FileOutputStream(outputFilePath);
|
364
|
+
|
365
|
+
|
366
|
+
|
367
|
+
while((fileLength = inputStream.read(buffer)) > 0) {
|
368
|
+
|
369
|
+
fileOutputstream.write(buffer, 0, fileLength);
|
370
|
+
|
371
|
+
//outputStream.write(buffer, 0, fileLength);
|
372
|
+
|
373
|
+
}
|
374
|
+
|
375
|
+
|
376
|
+
|
377
|
+
fileOutputstream.flush();
|
378
|
+
|
379
|
+
fileOutputstream.close();
|
380
|
+
|
381
|
+
//outputStream.flush();
|
382
|
+
|
383
|
+
//outputStream.close();
|
384
|
+
|
385
|
+
inputStream.close();
|
386
|
+
|
387
|
+
socket.close();
|
388
|
+
|
389
|
+
|
390
|
+
|
391
|
+
File dir = new File(path);
|
392
|
+
|
393
|
+
File[] dataFiles = dir.listFiles();
|
394
|
+
|
395
|
+
|
396
|
+
|
397
|
+
Log.d("debug","length:"+dataFiles.length);
|
398
|
+
|
399
|
+
Log.d("debug","length:"+dataFiles[0].getName());
|
400
|
+
|
401
|
+
|
402
|
+
|
403
|
+
}catch (Exception e) {
|
404
|
+
|
405
|
+
e.printStackTrace();
|
406
|
+
|
407
|
+
Log.d("debug","Exception e");
|
408
|
+
|
409
|
+
}
|
306
410
|
|
307
411
|
}
|
308
412
|
|
309
|
-
|
310
|
-
|
311
|
-
outputStream.flush();
|
312
|
-
|
313
|
-
outputStream.close();
|
314
|
-
|
315
|
-
inputStream.close();
|
316
|
-
|
317
|
-
serverSocket.close();
|
318
|
-
|
319
|
-
|
320
|
-
|
321
|
-
}catch (Exception e) {
|
322
|
-
|
323
|
-
|
413
|
+
}).start();
|
324
|
-
|
414
|
+
|
325
|
-
|
415
|
+
}
|
326
|
-
|
327
|
-
|
328
|
-
|
329
|
-
}
|
330
416
|
|
331
417
|
}
|
332
418
|
|
333
419
|
```
|
334
420
|
|
335
|
-
![Android fileexploer](619ac511f6c0dc54597c64dc3fa5ee28.png)
|
336
|
-
|
337
|
-
# 試したこと
|
338
|
-
|
339
|
-
Android(Client)側のアプリ固有のディレクトリのパスを
|
340
|
-
|
341
|
-
String path = context.getFilesDir().getPath()
|
342
|
-
|
343
|
-
で取得しています。
|
344
|
-
|
345
|
-
|
346
|
-
|
347
|
-
この場合だと受信データを書き込んだ後に
|
348
|
-
|
349
|
-
File[] dataFiles = dir.listFiles()
|
350
|
-
|
351
|
-
でファイルの一覧を取得できています。
|
352
|
-
|
353
|
-
|
354
|
-
|
355
|
-
###変更後 Android(Client)側
|
356
|
-
|
357
|
-
```java
|
358
|
-
|
359
|
-
import androidx.appcompat.app.AppCompatActivity;
|
360
|
-
|
361
|
-
|
362
|
-
|
363
|
-
import android.content.Context;
|
364
|
-
|
365
|
-
import android.os.Bundle;
|
366
|
-
|
367
|
-
import android.util.Log;
|
368
|
-
|
369
|
-
|
370
|
-
|
371
|
-
import java.io.File;
|
372
|
-
|
373
|
-
import java.io.FileOutputStream;
|
374
|
-
|
375
|
-
import java.io.InputStream;
|
376
|
-
|
377
|
-
import java.io.OutputStream;
|
378
|
-
|
379
|
-
import java.net.Socket;
|
380
|
-
|
381
|
-
|
382
|
-
|
383
|
-
public class MainActivity extends AppCompatActivity {
|
384
|
-
|
385
|
-
|
386
|
-
|
387
|
-
public static Socket socket = null;
|
388
|
-
|
389
|
-
public static String host = "192.168.11.2";
|
390
|
-
|
391
|
-
public static int port = 2001;
|
392
|
-
|
393
|
-
|
394
|
-
|
395
|
-
@Override
|
396
|
-
|
397
|
-
protected void onCreate(Bundle savedInstanceState) {
|
398
|
-
|
399
|
-
super.onCreate(savedInstanceState);
|
400
|
-
|
401
|
-
setContentView(R.layout.activity_main);
|
402
|
-
|
403
|
-
|
404
|
-
|
405
|
-
new Thread (new Runnable(){
|
406
|
-
|
407
|
-
public void run(){
|
408
|
-
|
409
|
-
|
410
|
-
|
411
|
-
String outputFilePath = null;
|
412
|
-
|
413
|
-
|
414
|
-
|
415
|
-
InputStream inputStream = null;
|
416
|
-
|
417
|
-
FileOutputStream fileOutputstream = null;
|
418
|
-
|
419
|
-
//OutputStream outputStream = null;
|
420
|
-
|
421
|
-
|
422
|
-
|
423
|
-
int fileLength = 0;
|
424
|
-
|
425
|
-
byte[] buffer = new byte[512];
|
426
|
-
|
427
|
-
|
428
|
-
|
429
|
-
try {
|
430
|
-
|
431
|
-
|
432
|
-
|
433
|
-
socket = new Socket(host, port);
|
434
|
-
|
435
|
-
inputStream = socket.getInputStream();
|
436
|
-
|
437
|
-
|
438
|
-
|
439
|
-
Context context = getApplicationContext();//変更箇所
|
440
|
-
|
441
|
-
String path = context.getFilesDir().getPath();//変更箇所
|
442
|
-
|
443
|
-
outputFilePath =path +"/receive_image.jpg";//変更箇所
|
444
|
-
|
445
|
-
Log.d("debug","path:"+path);
|
446
|
-
|
447
|
-
Log.d("debug","outputFilePath:"+outputFilePath);
|
448
|
-
|
449
|
-
|
450
|
-
|
451
|
-
fileOutputstream = new FileOutputStream(outputFilePath);
|
452
|
-
|
453
|
-
//outputStream = new FileOutputStream(outputFilePath);
|
454
|
-
|
455
|
-
|
456
|
-
|
457
|
-
while((fileLength = inputStream.read(buffer)) > 0) {
|
458
|
-
|
459
|
-
fileOutputstream.write(buffer, 0, fileLength);
|
460
|
-
|
461
|
-
//outputStream.write(buffer, 0, fileLength);
|
462
|
-
|
463
|
-
}
|
464
|
-
|
465
|
-
|
466
|
-
|
467
|
-
fileOutputstream.flush();
|
468
|
-
|
469
|
-
fileOutputstream.close();
|
470
|
-
|
471
|
-
//outputStream.flush();
|
472
|
-
|
473
|
-
//outputStream.close();
|
474
|
-
|
475
|
-
inputStream.close();
|
476
|
-
|
477
|
-
socket.close();
|
478
|
-
|
479
|
-
|
480
|
-
|
481
|
-
File dir = new File(path);
|
482
|
-
|
483
|
-
File[] dataFiles = dir.listFiles();
|
484
|
-
|
485
|
-
|
486
|
-
|
487
|
-
Log.d("debug","length:"+dataFiles.length);
|
488
|
-
|
489
|
-
Log.d("debug","length:"+dataFiles[0].getName());
|
490
|
-
|
491
|
-
|
492
|
-
|
493
|
-
}catch (Exception e) {
|
494
|
-
|
495
|
-
e.printStackTrace();
|
496
|
-
|
497
|
-
Log.d("debug","Exception e");
|
498
|
-
|
499
|
-
}
|
500
|
-
|
501
|
-
}
|
502
|
-
|
503
|
-
}).start();
|
504
|
-
|
505
|
-
}
|
506
|
-
|
507
|
-
}
|
508
|
-
|
509
|
-
```
|
510
|
-
|
511
421
|
###変更後 Logcat一部 Android(Client)側
|
512
422
|
|
513
423
|
```
|
3
タイトルの変更
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
Androidの内部ストレージのアクセス方法が知りたいです。
|
test
CHANGED
File without changes
|
2
タグの修正
test
CHANGED
File without changes
|
test
CHANGED
File without changes
|
1
題名の変更
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
PC-Android間のソケット通信において受信データの
|
1
|
+
PC-Android間のソケット通信において受信データのアクセス方法が知りたいです。
|
test
CHANGED
File without changes
|