簡體   English   中英

為什么我的 FileOutputstream 不寫入文件?

[英]Why Isn't My FileOutputstream Writing to a File?

我是一個 Android 應用程序的初學者,該應用程序使用 gcacace SignaturePad 庫來捕獲我的用戶的簽名。 我的目標是獲取簽名,將其壓縮為 JPEG,然后將該信息寫入用戶手機上的文件中,以便稍后訪問該圖片。

我目前在運行代碼時沒有出現錯誤或崩潰,但在我的設備(Google Pixel 2)上測試應用程序時沒有創建目錄或文件。 誰能幫我弄清楚問題出在哪里? 整個早上我都把頭靠在牆上,但仍然不知道。

ContextWrapper cw = new ContextWrapper(getApplicationContext());
            File directory = cw.getDir("images", Context.MODE_PRIVATE);
            if (!directory.exists()) {
                directory.mkdirs();
            }
            File myPath = new File(directory, "1.jpg");

            FileOutputStream fOut = null;

            try {
                fOut = new FileOutputStream(myPath);
            } catch (Exception e) {
                e.printStackTrace();
            }

            signaturePad.getSignatureBitmap().compress(Bitmap.CompressFormat.JPEG, 90, fOut);
            Bitmap signature = signaturePad.getSignatureBitmap();

            int bytes = signature.getByteCount();

            try {
                fOut.write(bytes);
                fOut.flush();
                fOut.close();
            } catch (IOException ex) {
                ex.printStackTrace();
            }

            Toast.makeText(activity_signature_pad.this, "Signature Saved", Toast.LENGTH_SHORT).show();

您問題中的代碼寫入 Android SDK 所指的內部存儲 這是您的應用程序私有的; 普通用戶無權訪問它(包括您,使用開發者工具時除外)。

您似乎想要寫入外部存儲 為此,請使用:

File directory = new File(getExternalFilesDir(null), "images")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM