ファイルを内部ストレージに保存するのが苦労しています。以下は外部ストレージに保存するための私のコードですが、私は内部ストレージにファイルを保存するための適切な方法を知らない。私はコーディングに新しいです。誰もがthis.`内部ストレージにファイルを保存する
public class Semester extends AppCompatActivity {
Button btnSem;
ListView lvFiles;
private ArrayAdapter arrayAdapter;
private ArrayList <String> files_on_server = new ArrayList < >();
private Handler handler;
private String selected_file;
private ProgressDialog progressDialog;
@
Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_semester);
btnSem = (Button) findViewById(R.id.btnSem);
lvFiles = (ListView) findViewById(R.id.lvFiles);
initialize();
}
private void initialize() {
arrayAdapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, files_on_server);
lvFiles.setAdapter(arrayAdapter);
handler = new Handler();
progressDialog = new ProgressDialog(this);
progressDialog.setTitle("Downloading...");
progressDialog.setMax(100);
progressDialog.setCancelable(false);
progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
btnSem.setOnClickListener(new View.OnClickListener() {@
Override
public void onClick(View view) {
Thread t = new Thread(new Runnable() {@
Override
public void run() {
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder().url("http:/192.168.0.102/client/index.php?list_files").build();
Response response = null;
try {
response = client.newCall(request).execute();
JSONArray array = new JSONArray(response.body().string());
for (int i = 0; i < array.length(); i++) {
String file_name = array.getString(i);
if (files_on_server.indexOf(file_name) == -1)
files_on_server.add(file_name);
}
handler.post(new Runnable() {@
Override
public void run() {
arrayAdapter.notifyDataSetChanged();
}
});
} catch (IOException e) {
e.printStackTrace();
} catch (JSONException e) {
e.printStackTrace();
}
}
});
t.start();
}
});
lvFiles.setOnItemClickListener(new AdapterView.OnItemClickListener() {@
Override
public void onItemClick(AdapterView <? > adapterView, View view, int i, long l) {
selected_file = ((TextView) view).getText().toString();
Thread t = new Thread(new Runnable() {@
Override
public void run() {
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder().url("192.168.0.102/client/" + selected_file).build();
Response response = null;
try {
response = client.newCall(request).execute();
float file_size = response.body().contentLength();
BufferedInputStream inputStream = new BufferedInputStream(response.body().byteStream());
OutputStream stream = new FileOutputStream(Environment.getRootDirectory() + "/files" + selected_file);
byte[] data = new byte[8192];
float total = 0;
int read_bytes = 0;
handler.post(new Runnable() {@
Override
public void run() {
progressDialog.show();
}
});
while ((read_bytes = inputStream.read(data)) != -1) {
total = total + read_bytes;
stream.write(data, 0, read_bytes);
progressDialog.setProgress((int)(total/file_size) * 100);
}
progressDialog.dismiss();
stream.flush();
stream.close();
response.body().close();
} catch (IOException e) {
e.printStackTrace();
}
}
});
}
});
}
}
`
でopenFileOutput(name, mode)を使用して
FileOutputStream
を作成することができますpleaesは、上記のコードで何ができるか私をお勧めすることはできますか? #Cobain –