Копирование файла на SDCard - PullRequest
0 голосов
/ 13 марта 2012

Я отчаянно пытаюсь скопировать файл на SDCard из моей необработанной папки, но это не сработает!Файл просто не отображается в файловом менеджере, и программа, к которой я даю путь (через намерение), также не может его найти.Это то, что я пытаюсь ...

private void CopyAssets() throws IOException {
        String path = Environment.getExternalStorageDirectory() + "/jazz.pdf";
        InputStream in = getResources().openRawResource(R.raw.jazz);
        FileOutputStream out = new FileOutputStream(path);
        byte[] buff = new byte[1024];
        int read = 0;
    try {
       while ((read = in.read(buff)) > 0) {
          out.write(buff, 0, read);
       }
    } finally {
         in.close();

         out.close();
    }
}

После чего я пытаюсь ...

    try {
        CopyAssets();

    } catch (IOException e1) {
        e1.printStackTrace();
    }

    String aux = Environment.getExternalStorageDirectory() + "/jazz.pdf";

    Uri path = Uri.parse(aux);

    Intent intent = new Intent(Intent.ACTION_VIEW);

    intent.setDataAndType(path, "application/pdf");
    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

    try {

        startActivity(intent);

    } catch (ActivityNotFoundException e) {

        Toast.makeText(bgn1.this, "No Application Available to View PDF",
                Toast.LENGTH_SHORT).show();
    }

1 Ответ

2 голосов
/ 13 марта 2012

Просто напишите out.flush(); в блоке finally и дайте мне знать, что произойдет,

finally {
       out.flush();
       in.close();
       out.close();
      }

Обновление:

Рабочий код:

private void CopyAssets() throws IOException
{       
    InputStream myInput = getResources().openRawResource(R.raw.jazz);
    String outFileName = Environment.getExternalStorageDirectory() + "/jazz.pdf";
    OutputStream myOutput = new FileOutputStream(outFileName);
    // transfer bytes from the input file to the output file
    byte[] buffer = new byte[1024];
    int length;
    while ((length = myInput.read(buffer)) > 0)
    {
        myOutput.write(buffer, 0, length);
    }
    // Close the streams
    myOutput.flush();
    myOutput.close();
    myInput.close();
  }
}
...