当前位置: 首页 > 面试题库 >

如何在Android中制作文件的副本?

邰胤
2023-03-14
问题内容

在我的应用中,我想用其他名称保存某个文件的副本(我从用户那里得到)

我真的需要打开文件的内容并将其写入另一个文件吗?

最好的方法是什么?


问题答案:

要复制文件并将其保存到目标路径,可以使用以下方法。

public static void copy(File src, File dst) throws IOException {
    InputStream in = new FileInputStream(src);
    try {
        OutputStream out = new FileOutputStream(dst);
        try {
            // Transfer bytes from in to out
            byte[] buf = new byte[1024];
            int len;
            while ((len = in.read(buf)) > 0) {
                out.write(buf, 0, len);
            }
        } finally {
            out.close();
        }
    } finally {
        in.close();
    }
}

在API 19+上,你可以使用Java自动资源管理:

public static void copy(File src, File dst) throws IOException {
    try (InputStream in = new FileInputStream(src)) {
        try (OutputStream out = new FileOutputStream(dst)) {
            // Transfer bytes from in to out
            byte[] buf = new byte[1024];
            int len;
            while ((len = in.read(buf)) > 0) {
                out.write(buf, 0, len);
            }
        }
    }
}


 类似资料:
  • 在我的Android应用程序中,我想为手机和平板电脑的不同屏幕尺寸支持不同背景尺寸的图像。我在下面的文件夹中读到了添加不同大小的图像。但是,我的android项目中没有这些文件夹。我只有Res/Drawable和Res/Layout文件夹。如何创建多屏幕文件夹?

  • 我正在使用基本的android应用程序,我不知道在android Studio中在哪里添加jar文件。

  • 问题内容: 我们有一个元素列表,并且有一个非常简单的碰撞检测,可以将每个对象与其他每个对象进行检查。 该检查是可交换的,因此为了避免重复两次,我们将在C ++中执行此操作: 这里的关键是副本 您将如何用Java编写此代码? 问题答案: 您不能复制Java迭代器,因此没有它们就必须这样做:

  • 问题内容: 是2D数组。我想要一个新变量,其值与数组相同。此外, 使用Y进行的任何其他操作都不应影响X的值。 在我看来使用起来很自然。但是它不适用于数组。如果我这样做,然后更改y,x也会更改。我发现问题可以这样解决: 但是它不适用于2D阵列。例如: 返回。如果我替换为,这也无济于事。 有人知道什么是正确且简单的方法吗? 问题答案: 尝试这个: 我不确定,也许就足够了。

  • 问题内容: 我想知道如何制作一个深复制。 我知道可以使用IOUtils软件包来完成,但是如果可能的话,我想避免使用它们。有谁知道替代方法? 问题答案: InputStream是抽象的,不会公开(也不公开其子级)内部数据对象。因此,“深度复制” InputStream的唯一方法是创建ByteArrayOutputStream,然后在InputStream上执行read()之后,将此数据写入()到By

  • 我找到了这个解决方案:如何在Android Studio中更改项目的名称,但似乎不起作用,我不想损坏任何东西,所以我的问题-如何更改项目的文件夹名称? 我找不到任何内部解决办法,所以也许你有什么把戏。