2012-04-13 140 views
2
File file = new File("android.resource://com.baltech.PdfReader/assets/raw/"+filename); 

        if (file.exists()) { 
        Uri targetUri = Uri.fromFile(file); 
        Intent intent = new Intent(Intent.ACTION_VIEW); 
        intent.setDataAndType(targetUri, "application/pdf"); 
         try { 
          startActivity(intent); 
         } 
         catch (ActivityNotFoundException e) { 
          Toast.makeText(PdfReaderActivity.this, "No Application Available to View PDF", Toast.LENGTH_SHORT).show(); 
         } 

我想閱讀資產文件夾中的.pdf文件。我有什麼路徑可以給文件名。 plz幫助。由於如何閱讀資產文件夾中的.pdf文件

+0

原材料不在資產 – njzk2 2012-04-13 08:51:17

+0

我現在在原始文件夾中放置了資源。我怎麼能從res/row文件夾中獲取文件? – ZooZoo 2012-04-13 09:41:24

回答

2
File file = new File("file:///android_asset/raw/"+filename); 

下面替換上面一行,並嘗試..

File file = new File("android.resource://com.com.com/raw/"+filename); 

,把你的PDF文件的原始文件夾,而不是資產。用您的軟件包名稱更改com.com.com。

+0

嗨,謝謝你的回覆。 bt做chage,但仍然不工作:( – ZooZoo 2012-04-13 08:26:38

+0

我編輯了我的上面的代碼。plz幫助 – ZooZoo 2012-04-13 08:30:14

+0

不創建原始文件夾資源在res文件夾中創建原始文件夾並將文件放在那裏 – 2012-04-13 09:01:47

1

由於資產文件存儲在apk文件中,因此沒有資產文件夾的絕對路徑。 您可以使用一種變通方法創建一個用作緩衝區的新文件。

你應該使用AssetManager:

AssetManager mngr = getAssets(); 
InputStream ip = mngr.open(<filename in the assets folder>); 
File assetFile = createFileFromInputStream(ip); 


private File createFileFromInputStream(InputStream ip); 

try{ 
    File f=new File(<filename>); 
    OutputStream out=new FileOutputStream(f); 
    byte buf[]=new byte[1024]; 
    int len; 
    while((len=inputStream.read(buf))>0) 
    out.write(buf,0,len); 
    out.close(); 
    inputStream.close(); 

}catch (IOException e){} 
} 
} 
+0

感謝您的答覆..但它用於.txt文件不.pdf文件 – ZooZoo 2012-04-13 08:31:11

2

我不知道,如果你有一個答案已經,似乎很老了,但是這個工作對我來說。

//you need to copy the input stream to a new file, so store it elsewhere 
//this stores it to the sdcard in a new folder "MyApp" 
String filename = Environment.getExternalStorageDirectory().getAbsolutePath() + "/MyApp/solicitation_form.pdf"; 

AssetManager assetManager = getAssets(); 

try { 
    InputStream pdfFileStream = assetManager.open("solicitation_form.pdf"); 
    CreateFileFromInputStream(pdfFileStream, filename); 

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

File pdfFile = new File(filename); 

的CreateFileFromInputStream功能如下

public void CreateFileFromInputStream(InputStream inStream, String path) throws IOException { 
    // write the inputStream to a FileOutputStream 
    OutputStream out = new FileOutputStream(new File(path)); 

    int read = 0; 
    byte[] bytes = new byte[1024]; 

    while ((read = inStream.read(bytes)) != -1) { 
     out.write(bytes, 0, read); 
    } 

    inStream.close(); 
    out.flush(); 
    out.close(); 

} 

真希望這可以幫助別人誰讀這一點。