2012-03-13 17 views
1

私は、ローカルドライブ内の別のものからpdioファイルを作成しようとしました。これは、.pdf拡張子を持つファイルですが、ファイルを開くことができません。ファイルは既に使用されていると言われています。ファイルのサイズが大きすぎると、ファイルサイズが大きくなります(元ファイルサイズ:5,777 kB、新しく作成されたファイルサイズは38,567kBです)。イム誰かが私に説明を与えることができれば、私は感謝している熟練したJavaプログラマの多くが、まだありません。..PDFからjava.ioを作成

String path = "D:\\priya_Docs\\Android pdfs\\Professional_Android_Application_Development.pdf"; 
     File file = new File(path); 
     System.out.println("Located a file " + file.isFile()); 
     String filesArray = file.getPath(); 
     File getFile = file.getAbsoluteFile(); 
     FileInputStream fis = new FileInputStream(getFile); 
     FileOutputStream fos = new FileOutputStream(
       "D:\\priya_Docs\\Androiddoc.pdf"); 
     for (int b = fis.read(); b != -1;) { 
      fos.write(b); 
     } 
+0

書き込みが終了したら出力ストリームを閉じますか? –

+0

ファイルを1バイトずつコピーしようとしています。それは非常に遅く、非効率的です。 – Jesper

+0

後でFileOutputStreamに何か他のものを書き込んでいないことは確かですか? forループの直後にストリームをフラッシュして閉じることをお勧めします。 – Alderath

答えて

0

あなたが最初 二つの問題を満たし、あなたはfisとfosというリソースを閉じなければならない、またはすでに使用中のファイルが であると言うと、pdfファイルがバイト配列で構成されているため、バイト[]を使用してデータを受け取らなければなりません。

  String path = "D:\\priya_Docs\\Android pdfs\\Professional_Android_Application_Development.pdf"; 
    File file = new File(path); 
    System.out.println("Located a file " + file.isFile()); 
    String filesArray = file.getPath(); 
    File getFile = file.getAbsoluteFile(); 
    FileInputStream fis = new FileInputStream(getFile); 
    FileOutputStream fos = new FileOutputStream(
      "D:\\priya_Docs\\Androiddoc.pdf"); 
    byte[] buff=new byte[1024]; 
    int len; 
    while((len=fis.read(buff))>=0) { 
     fos.write(buff,0,len); 
    } 

    fis.close(); 
    fos.close(); 
+0

助けてくれてありがとう!だからあなたは、ファイルをバイトバッファに読み込み、intを使って読み書きする方が良いと言っています。 –

関連する問題