die*_*rre 1 java windows file-io
我在WINDOWS上使用这个脚本
public void copyFile(File sourceDirectory, File targetFile, File targetDirectory) throws IOException{
String temp = targetFile.getAbsolutePath();
String relativeD = temp.substring(sourceDirectory.getAbsolutePath().length(), targetFile.getAbsolutePath().length());
String rootD = sourceDirectory.getName();
String fullPath = targetDirectory.getAbsolutePath() + rootD + relativeD;
File fP = new File( fullPath );
System.out.println("PATH: " + fullPath);
FileChannel inChannel = new FileInputStream(targetFile).getChannel();
FileChannel outChannel = new FileOutputStream( fP ).getChannel();
int maxCount = (64 * 1024 * 1024) - (32 * 1024);
long size = inChannel.size();
long position = 0;
while (position < size) {
position += inChannel.transferTo(position, maxCount, outChannel);
}
if (inChannel != null) inChannel.close();
if (outChannel != null) outChannel.close();
}
Run Code Online (Sandbox Code Playgroud)
我正在做的很简单.我需要将文件从一个位置复制到另一个位置,但我必须保留它们所在的目录.
所以relativeD我正在采取这样的方式:dir/files.sql或者只是files.sql.
发生这种情况是因为对于特定的目录,我需要递归地复制它们,尊重树结构.
问题是这种方法不起作用.我不知道为什么因为我使用简单
FileChannel outChannel = new FileOutputStream( new File( targetDirectory, targetFile ) ).getChannel();
Run Code Online (Sandbox Code Playgroud)
有用.我想这种情况正在发生,因为在这种情况下,它正在复制现有目录下的文件.
根据这篇文章(谷歌搜索热门搜索'java mkdir recursive'):
看一下java.io.File:使用mkdirs函数完美地完成工作:
Run Code Online (Sandbox Code Playgroud)new File("c:/aaa/bbb/ccc/ddd").mkdirs();
| 归档时间: |
|
| 查看次数: |
5839 次 |
| 最近记录: |