繁体   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