teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

1

調べてみると、ソケット接続にBufferedInputStreamは向いていないとのことなので、InputStreamを使用するよう変更、それに伴いwhile文も変更しました。

2020/07/17 06:02

投稿

ShiroKuro1
ShiroKuro1

スコア1

title CHANGED
File without changes
body CHANGED
@@ -32,7 +32,7 @@
32
32
  import android.widget.Toast;
33
33
  import android.util.Log;
34
34
 
35
- import java.io.BufferedInputStream;
35
+ import java.io.InputStream;
36
36
  import java.io.BufferedWriter;
37
37
  import java.io.File;
38
38
  import java.io.IOException;
@@ -107,20 +107,27 @@
107
107
  }
108
108
 
109
109
  private void StartPick() {
110
- try (BufferedInputStream bufferedInputStream =
111
- new BufferedInputStream(btSocket.getInputStream());
110
+ try (InputStream inputStream = btSocket.getInputStream();
111
+ OutputStream outputStream =
112
- OutputStream outputStream = openFileOutput(fileName, Context.MODE_PRIVATE);
112
+ openFileOutput(fileName, Context.MODE_PRIVATE);
113
+ OutputStreamWriter outputStreamWriter =
113
- OutputStreamWriter outputStreamWriter = new OutputStreamWriter(outputStream, "UTF-8");
114
+ new OutputStreamWriter(outputStream, "UTF-8");
115
+ BufferedWriter bufferedWriter =
114
- BufferedWriter bufferedWriter = new BufferedWriter(outputStreamWriter)) {
116
+ new BufferedWriter(outputStreamWriter)) {
115
117
 
116
118
  // InputStreamのバッファを格納
117
119
  byte[] buffer = new byte[1024];
118
120
  // 取得したバッファサイズを格納
119
121
  int len;
120
122
 
123
+ while (true) {
121
- while ((len = bufferedInputStream.read(buffer)) != -1) {
124
+ int len = inputStream.read(buffer);
125
+ if (len == -1) {
126
+ break;
127
+ }
122
128
  outputStream.write(buffer, 0, len);
123
129
  }
130
+
124
131
  String readData = outputStream.toString();
125
132
  if (readData.trim() != null && !readData.trim().equals("")) {
126
133
  bufferedWriter.write(readData);