2016-09-08 16 views
-2

ファイルを内部ストレージに保存するのが苦労しています。以下は外部ストレージに保存するための私のコードですが、私は内部ストレージにファイルを保存するための適切な方法を知らない。私はコーディングに新しいです。誰もが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(); 
 
      } 
 
      } 
 
     }); 
 
     } 
 
    }); 
 

 
    } 
 

 

 

 
}

`

答えて

1

表情で私を支援し、これらにより内部ストレージを使用する方法を傾くことができます:

https://developer.android.com/guide/topics/data/data-storage.html#filesInternal

http://www.tutorialspoint.com/android/android_internal_storage.htm

+0

openFileOutput(name, mode)を使用してFileOutputStreamを作成することができますpleaesは、上記のコードで何ができるか私をお勧めすることはできますか? #Cobain –

0
OutputStream stream = new FileOutputStream(Environment.getRootDirectory() + "/files" + selected_file); 

は、上記の行では、アプリケーションの内部ディレクトリに保存するEnvironment.getRootDirectory()getFilesDir() instadを使用する必要があります。

OR

また、あなたは直接MODE_PRIVATE

関連する問題