【发布时间】:2016-09-08 08:24:03
【问题描述】:
我很难将文件保存到内部存储中。下面是我保存到外部存储的代码,但我不知道将文件保存到内部存储的正确方法。我是编码新手。谁能帮我解决这个问题。`
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();
}
}
});
}
});
}
}
`
【问题讨论】: