根据实际文件名
将文件移动到其他文件夹根据文件名
将文件从folder1移动到其他文件夹示例:
Inside D drive:名为Tango的文件夹有3个文件:
John1.txt
John2.txt
John3.txt
D驱动器内部:有3个名为:
的文件夹John1
John2
John3
我想根据文件名与文件夹名称的匹配,将文件从Tango文件夹移动到其他文件夹(例如John1或John2或John3)。
到目前为止,我能够列出文件夹的内容,但我无法弄清楚如何实现上述目标。
public class FileCopy {
public static void main(String[] args) {
File f1 = new File("Tango");
String[] allFiles = f1.list();
for (String files : allFiles) {
System.out.println(files);
}
}
}
答案 0 :(得分:3)
获取文件夹中的文件,获取名称,提取扩展名,使用File.mkDir()
创建目录,然后File.renameTo()
移动目录:
// Get array with all files of `Tango`
File[] allFiles = f1.listFiles();
for (File file : allFiles) {
// extract the extension John1.txt > John1
String filename = file.getName().substring(0, file.getName().indexOf("."));
// get the the new folder
File newDir = new File(filename);
// create the folder if not exists (delete this if you dont want to make new dir)
if (!newDir.exists()) {
newDir.mkDir();
}
// and rename it to the new folder + name
file.renameTo(new File(newDir.getAbsolutePath() + File.separator + file.getName()));
}
答案 1 :(得分:1)
如果您至少使用Java 7(您应该这样做):
import java.io.IOException;
import java.nio.file.*;
public class FileCopy {
public static void main(String[] args) throws IOException {
try (DirectoryStream<Path> paths = Files.newDirectoryStream(Paths.get("Tango"))) {
for (Path path : paths) {
String fileName = path.getFileName().toString();
Files.move(path, path.getParent().resolveSibling(fileName.substring(0, fileName.length() - 4)).resolve(fileName));
}
}
}
}
答案 2 :(得分:0)
答案 3 :(得分:0)
假设您要将名称中包含john1
的文件移动到您可以使用以下代码的文件夹john1
:
public static void main(String[] args) {
try {
String pathname = "Tango";
File f1 = new File(pathname);
String[] allFiles = f1.list();
InputStream inStream = null;
OutputStream outStream = null;
byte[] buffer = new byte[1024];
for (String file : allFiles) {
if (file.contains("john1")) {
File source = new File(pathname + "\\" + file);
File dest = new File("D:\\john1\\" + file);
inStream = new FileInputStream(source);
outStream = new FileOutputStream(dest);
int length;
while ((length = inStream.read(buffer)) > 0) {
outStream.write(buffer, 0, length);
}
inStream.close();
outStream.close();
source.delete();
}
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
答案 4 :(得分:0)
public class FileCopy {
public static void main(String[] args) {
File folder= new File("Tango");
File[] files = folder.listFiles();
for (Files file : files ) {
String filename = file.getName().substring(0,file.getName().indexOf("."));
File yourDir= new File(filename);
if (!yourDir.exists()) {
yourDir.mkDir();
}
file.renameTo(new File(yourDir.getAbsolutePath() + file.getName()));
}
}
}
.renameTo
:用于移动文件
如果不存在,你可以创建你的目录
if (!yourDir.exists()) {
yourDir.mkDir();
}