Itext를 사용하여 PDF를 만들려고 시도하는 동안 IOException이 발생합니다. 오류는 내가 매니페스트 파일에 필요한 권한을 추가 한대로 읽기 전용 저장소에 쓰기를 시도하고 있다고 말합니다.android와 함께 IText를 사용하여 PDF를 작성하는 동안 IOException 가져 오기
코도 바 3.5입니다.
public class PdfCreator {
String TAG = "PdfCreator";
public void createPdf(){
try {
Log.d(TAG, Environment.getExternalStorageDirectory().getPath() + "/Hello.pdf");
OutputStream file = new FileOutputStream(new File(Environment.getExternalStorageDirectory().getPath() + "/Hello.pdf"));
Document document = new Document();
PdfWriter.getInstance(document, file);
document.open();
document.add(new Paragraph("Hello world, iText"));
document.close();
file.close();
} catch (Exception e) {
e.printStackTrace();
}
}
스테이크 추적 : 어떤 도움에 감사드립니다
09-08 05:15:42.501: W/System.err(1114): java.io.FileNotFoundException: /storage/sdcard/Hello.pdf: open failed: EROFS (Read-only file system)
09-08 05:15:42.531: W/System.err(1114): at libcore.io.IoBridge.open(IoBridge.java:409)
09-08 05:15:42.531: W/System.err(1114): at java.io.FileOutputStream.<init> (FileOutputStream.java:88)
09-08 05:15:42.581: W/System.err(1114): at java.io.FileOutputStream.<init> (FileOutputStream.java:73)
09-08 05:15:42.581: W/System.err(1114): at com.idsil.pdfapp.PdfCreator.createPdf(PdfCreator.java:19)
09-08 05:15:42.581: W/System.err(1114): at com.idsil.pdfapp.PdfApp.onCreate(PdfApp.java:36)
09-08 05:15:42.581: W/System.err(1114): at android.app.Activity.performCreate(Activity.java:5133)
09-08 05:15:42.581: W/System.err(1114): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
09-08 05:15:42.581: W/System.err(1114): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175)
09-08 05:15:42.581: W/System.err(1114): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
09-08 05:15:42.591: W/System.err(1114): at android.app.ActivityThread.access$600(ActivityThread.java:141)
09-08 05:15:42.591: W/System.err(1114): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
09-08 05:15:42.631: W/System.err(1114): at android.os.Handler.dispatchMessage(Handler.java:99)
09-08 05:15:42.631: W/System.err(1114): at android.os.Looper.loop(Looper.java:137)
09-08 05:15:42.658: W/System.err(1114): at android.app.ActivityThread.main(ActivityThread.java:5103)
09-08 05:15:42.661: W/System.err(1114): at java.lang.reflect.Method.invokeNative(Native Method)
09-08 05:15:42.661: W/System.err(1114): at java.lang.reflect.Method.invoke(Method.java:525)
09-08 05:15:42.661: W/System.err(1114): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
09-08 05:15:42.661: W/System.err(1114): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
09-08 05:15:42.661: W/System.err(1114): at dalvik.system.NativeStart.main(Native Method)
09-08 05:15:42.691: W/System.err(1114): Caused by: libcore.io.ErrnoException: open failed: EROFS (Read-only file system)
09-08 05:15:42.691: W/System.err(1114): at libcore.io.Posix.open(Native Method)
09-08 05:15:42.691: W/System.err(1114): at libcore.io.BlockGuardOs.open(BlockGuardOs.java:110)
09-08 05:15:42.691: W/System.err(1114): at libcore.io.IoBridge.open(IoBridge.java:393)
여기
는 코드입니다.미리 감사드립니다.
Environment.getExternalStorageDirectory().getAbsolutePath()+"/Hello.pdf"
use .getAbsolutePath() instead of .getPath()..
이런 식으로 파일을 생성
당신이 당신의 매니페스트에' "는'android.permission.WRITE_EXTERNAL_STORAGE을 줬나 봅니다, 새 에뮬레이터를 만들고 200 이상에 SD 카드의 크기를 부여? – Apoorv
예, 받았습니다. 내 AVD의 파일 탐색기에서 dr-xr-xr-x와 같은 사용 권한이있는 storage/sdcard /를 보여줍니다. 글을 쓸 권한이 없지만 왜 그런지 이해할 수 없습니다. – JSNinja