Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- D:
- root
- popcorn-folder1
- popcorn-subfolder1
- popcorn-subfile1
- popcorn-file1
- popcorn-folder2
- popcorn-subfolder2
- popcorn-file2
- D:
- root
- folder1
- subfolder1
- subfile1
- file1
- folder2
- subfolder2
- file2
- package com.din.pach;
- import java.io.File;
- import java.io.IOException;
- import java.nio.file.FileVisitResult;
- import java.nio.file.FileVisitor;
- import java.nio.file.Files;
- import java.nio.file.Path;
- import java.nio.file.Paths;
- import java.nio.file.StandardCopyOption;
- import java.nio.file.attribute.BasicFileAttributes;
- public class FileNio {
- public static void main(String[] args) throws IOException {
- Path sourcePath = Paths.get("D:\root\");
- Files.walkFileTree(sourcePath, new FileVisitor<Path>() {
- @Override
- public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) throws IOException {
- // System.out.println("pre visit dir:" + dir);
- //rename(dir);
- //renameFile(dir);
- return FileVisitResult.CONTINUE;
- }
- @Override
- public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
- //System.out.println("visit file: " + file);
- renameFile(file);
- System.out.println("====================================================================");
- return FileVisitResult.CONTINUE;
- }
- @Override
- public FileVisitResult visitFileFailed(Path file, IOException exc) throws IOException {
- // System.out.println("visit file failed: " + file);
- return FileVisitResult.CONTINUE;
- }
- @Override
- public FileVisitResult postVisitDirectory(Path dir, IOException exc) throws IOException {
- // System.out.println("post visit directory: " + dir);
- renameDirectory(dir);
- return FileVisitResult.CONTINUE;
- }
- });
- }
- public static void renameFile(Path file) throws IOException {
- boolean isDirectory = Files.isDirectory(file);
- boolean isWritable = Files.isWritable(file);
- System.out.println("isDirectory-> "+isDirectory);
- System.out.println("isWritable-> "+isWritable);
- Path sourcePath = Paths.get(file.toString());
- String origName = file.getFileName().toString();
- String newName = origName.replaceAll("POPCORN-", "");
- if (isWritable&&!isDirectory) {
- System.out.println("fname-> "+origName);
- /*get the path of the directory*/
- String baseLoc = file.getParent().toString();
- System.out.println("baseLoc-> "+baseLoc);
- if (origName.contains("POPCORN-") /*|| origName.contains("#") || origName.contains("@")*/){
- System.out.println("Orig name-> "+origName);
- /*origName = origName.replaceAll("&", "_and_");
- origName = origName.replaceAll("@", "_at_");*/
- System.out.println("New Name-> "+newName);
- String newLoc = baseLoc+File.separator+newName;//having "/" hardcoded is not cross-platform.
- System.out.println("newLoc-> "+newLoc);
- //File newFile = new File(newLoc);
- Path destinationPath = Paths.get(newLoc);
- Files.move(sourcePath, destinationPath, StandardCopyOption.REPLACE_EXISTING);
- } else {
- System.out.println("No write permission");
- }
- }else{
- /*if(origName.contains("POPCORN-") || origName.contains("#") || origName.contains("@")){
- Files.copy(sourcePath, sourcePath.resolveSibling(newName),StandardCopyOption.REPLACE_EXISTING);
- }*/
- }
- }
- public static void renameDirectory(Path file) throws IOException {
- boolean isDirectory = Files.isDirectory(file);
- boolean isWritable = Files.isWritable(file);
- System.out.println("isDirectory-> "+isDirectory);
- System.out.println("isWritable-> "+isWritable);
- Path sourcePath = Paths.get(file.toString());
- String origName = file.getFileName().toString();
- String newName = origName.replaceAll("POPCORN-", "");
- if (isWritable&&isDirectory) {
- if(origName.contains("POPCORN-") /*|| origName.contains("#") || origName.contains("@")*/){
- Files.move(sourcePath, sourcePath.resolveSibling(newName),StandardCopyOption.ATOMIC_MOVE);
- }
- } else {
- System.out.println("No write permission");
- }
- }
- }
- Exception in thread "main" java.nio.file.AccessDeniedException: D:rootPOPCORN-folder1 -> D:rootfolder1
- at sun.nio.fs.WindowsException.translateToIOException(Unknown Source)
- at sun.nio.fs.WindowsException.rethrowAsIOException(Unknown Source)
- at sun.nio.fs.WindowsFileCopy.move(Unknown Source)
- at sun.nio.fs.WindowsFileSystemProvider.move(Unknown Source)
- at java.nio.file.Files.move(Unknown Source)
- at com.din.pach.FileNio.renameDirectory(FileNio.java:121)
- at com.din.pach.FileNio$1.postVisitDirectory(FileNio.java:45)
- at com.din.pach.FileNio$1.postVisitDirectory(FileNio.java:1)
- at java.nio.file.Files.walkFileTree(Unknown Source)
- at java.nio.file.Files.walkFileTree(Unknown Source)
- at com.din.pach.FileNio.main(FileNio.java:19)
Add Comment
Please, Sign In to add comment