Java 有没有办法在Android上复制文件夹?(非文件)
我想在我正在创建的应用程序中包括目录复制功能。我问你是因为我在Android上找不到目录的副本 试图将在Java上运行良好的代码移植到Android时出现了一个问题Java 有没有办法在Android上复制文件夹?(非文件),java,android,Java,Android,我想在我正在创建的应用程序中包括目录复制功能。我问你是因为我在Android上找不到目录的副本 试图将在Java上运行良好的代码移植到Android时出现了一个问题 public void copyDirectory(){ File folder1 = new File(srcDir); File folder2 = new File(dstDir); File[] target_file = folder1.listFiles(); for (File fil
public void copyDirectory(){
File folder1 = new File(srcDir);
File folder2 = new File(dstDir);
File[] target_file = folder1.listFiles();
for (File file : target_file) {
File temp = new File(folder2.getAbsolutePath() + File.separator + file.getName());
if(file.isDirectory()){
temp.mkdir();
} else {
FileInputStream fis = null;
FileOutputStream fos = null;
try {
fis = new FileInputStream(file);
fos = new FileOutputStream(temp) ;
byte[] b = new byte[4096];
int cnt = 0;
while((cnt=fis.read(b)) != -1){
fos.write(b, 0, cnt);
}
} catch (Exception e) {
e.printStackTrace();
} finally{
try {
fis.close();
fos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}
原因:java.lang.NullPointerException:尝试对空对象引用调用虚拟方法“void java.io.FileOutputStream.close()”
在com.xxx.xxx.filecomposition.copyDirectory(filecomposition.java:54),在这一行的代码中
File folder1 = new File(srcDir);
srcDir的值是多少?我想这不是
获取正确的值这就是文件夹不可用的原因
在调用
temp.mkdir();
因此,我的建议是获得正确的srcDir,如下所示
srcDir = Environment.getDataDirectory().getAbsolutePath();
和在温度变量中
File temp =new File(srcDir,file.getName());
if(!temp.exists())
{
temp.mkDir();
}
请尝试一下,我认为它会起作用。
public void copyDirectory()
一个没有参数的函数?请用参数开始制作。类似于public void copyDirectory(String srcDir,String dstDir)
或public void copyDirectory(File srcFolder,File dstFolder)
。在那之后,展示你确切使用的路径。以及安卓版本。mkdirs()返回false或true。检查返回的内容。如果目录已经存在,则不要调用mkdirs()代码>这不是目标。这些是源文件。更好:File[]srcfiles[]=folder1.listFiles()代码>然后temp
是目标。并使函数递归。您没有复制源的子目录中的文件。请检查mkdir()的返回值。如果返回false,则不要继续。