Android代码实现复制文件到文件夹
作为一名经验丰富的开发者,我很荣幸能够教会刚入行的小白如何在Android上实现复制文件到文件夹的功能。下面我将详细介绍整个实现过程,并提供相应的代码示例。
流程图
flowchart TD
A(开始)
B(复制文件)
C(文件夹是否存在)
D(创建文件夹)
E(复制文件到文件夹)
F(结束)
A --> B
B --> C
C --> |存在| E
C --> |不存在| D
D --> E
E --> F
步骤说明
下面是实现复制文件到文件夹功能的步骤说明:
步骤 | 描述 |
---|---|
1 | 检查文件是否存在 |
2 | 如果文件不存在,创建文件夹 |
3 | 复制文件到文件夹 |
4 | 完成复制 |
代码实现
步骤1:检查文件是否存在
下面的代码展示了如何检查文件是否存在:
import java.io.File;
public class FileUtil {
public static boolean isFileExists(String filePath) {
File file = new File(filePath);
return file.exists();
}
}
代码说明:
isFileExists
方法用于检查文件是否存在。File
类表示文件或目录的抽象表示。通过传入文件路径创建一个File
对象。exists
方法用于检查文件是否存在,如果文件存在则返回true
,否则返回false
。
步骤2:创建文件夹
如果文件不存在,需要创建文件夹。下面的代码展示了如何创建文件夹:
import java.io.File;
public class FileUtil {
public static void createDirectory(String directoryPath) {
File file = new File(directoryPath);
if (!file.exists()) {
file.mkdirs();
}
}
}
代码说明:
createDirectory
方法用于创建文件夹。mkdirs
方法用于创建文件夹及其父文件夹。如果文件夹已存在,则不进行任何操作。
步骤3:复制文件到文件夹
下面的代码展示了如何复制文件到文件夹:
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class FileUtil {
public static void copyFileToDirectory(String sourceFilePath, String destinationDirectoryPath) throws IOException {
File sourceFile = new File(sourceFilePath);
File destinationDirectory = new File(destinationDirectoryPath);
if (!destinationDirectory.exists()) {
destinationDirectory.mkdirs();
}
File destinationFile = new File(destinationDirectory, sourceFile.getName());
try (FileInputStream fis = new FileInputStream(sourceFile);
FileOutputStream fos = new FileOutputStream(destinationFile)) {
byte[] buffer = new byte[1024];
int length;
while ((length = fis.read(buffer)) > 0) {
fos.write(buffer, 0, length);
}
}
}
}
代码说明:
copyFileToDirectory
方法用于复制文件到文件夹。- 首先,创建源文件和目标文件夹的
File
对象。 - 如果目标文件夹不存在,则创建目标文件夹。
- 然后,创建目标文件的
File
对象,文件名与源文件相同。 - 使用
FileInputStream
读取源文件的内容,使用FileOutputStream
将内容写入目标文件。 - 通过使用缓冲区的方式复制文件,提高复制速度。
步骤4:完成复制
完成复制后可以进行一些额外的操作,例如显示成功消息或进行其他处理。下面是一个示例:
public class MainActivity extends AppCompatActivity {
private static final String SOURCE_FILE_PATH = "source_file_path";
private static final String DESTINATION_DIRECTORY_PATH = "destination_directory_path";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
String sourceFilePath = getIntent().getStringExtra(SOURCE_FILE_PATH);
String destinationDirectoryPath = getIntent().getStringExtra(DESTINATION_DIRECTORY_PATH);
try {
FileUtil.copyFileToDirectory(sourceFilePath, destinationDirectoryPath);
Toast.makeText(this, "复制成功", Toast.LENGTH_SHORT).show();
} catch (IOException e) {
e.printStackTrace();
Toast.makeText(this, "复制失败", Toast.LENGTH_SHORT).show();