Это один из шагов задания по программированию, с которым у меня возникли проблемы за последние несколько недель. Я переписываю свой код, чтобы попытаться заставить его работать.
Первый шаг, над которым я работаю, это: создать новый каталог с тем же именем, что и у исходного каталога, но в новом месте назначения.
Как видно из моего кода, я запрашиваю у пользователя имя исходного каталога и место назначения, в которое пользователь хочет скопировать этот каталог. В конце концов, я скопирую весь каталог (включая подкаталоги и файлы) в новый каталог в новом месте, которое ввел пользователь.
Вот мой код. Я попытался скопировать что-то с флешки на рабочий стол, но это не сработало.
package recursivedirduplication;
/**
* @author zhughes3
* Last edited Tuesday, March 31st, 2014 @ 12pm
*/
import java.io.*;
import java.util.Scanner;
public class RecursiveDirDuplication {
/**
* The following program:
* 1. Asks the user for the source directory and destination.
* 2. Makes a new directory in the new location with the same name
* as the source directory.
* 3. Creates an array with File class objects for each item in the contents
* of the source directory.
* 4. Next, it iterates the array, and for each item in the array:
* - if it is a file, it copies the file to the new directory using the
* copyFile() method taken from CopyFileDemoE.
* - if it is a directory, recursively call this method to copy the
* directory and all of its contents.
*/
public static void main(String[] args) throws Exception{
// Create a new instance of Scanner to get user input
Scanner scanner = new Scanner (System.in);
//Ask user to input the directory to be copied
System.out.print("Input directory to be copied.");
//Save input as a String
String source = scanner.nextLine();
//Ask user to input destination where directory will be copied
System.out.print("Input destination where directory will be moved to.");
//Save input as String
String dest = scanner.nextLine();
//Make a new directory in the new location with the same name as the
//source directory
createDir(source,dest);
}
public static void createDir (String source, String dest) throws Exception{
//Create a File object for new directory in new location with same name
//as source directory
File newDir = new File (dest + source);
//Create a new directory in new user-inputted destination with same name
//as the source directory
newDir.mkdir();
}
Как вы можете судить по шагам в примечаниях к программе: на данный момент я пытаюсь выполнить только шаг 2.
Я очень запутался, когда дело доходит до создания новых объектов File, потому что я не понимаю, как работает синтаксис из-за путей и имен файлов. Мне очень трудно это понять. Мой код неправильный? Есть ли какие-либо инструкции / советы, которые кто-нибудь может дать мне по этому поводу.
Цель состоит в том, чтобы запросить у пользователя исходный каталог и новое место назначения, в которое он хочет скопировать каталог. Теперь моя цель — просто создать новый каталог в новом месте назначения с тем же именем, что и исходное место назначения.
Делая это шаг за шагом, чтобы понять это полностью.
Любая помощь будет принята с благодарностью. Спасибо, парни.
-------------------------------------------------------- РЕДАКТИРОВАТЬ № 1: ----- ------------------------------------- Посмотрев на другие проблемы Stackoverflow, я изменил код в своем второй метод createDir для этого:
public static void createDir (String source, String dest) throws Exception{
//Create a File object for new directory in new location with same name
//as source directory
File newDest = new File (dest);
File newDir = new File (newDest, source);
//Create a new directory in new user-inputted destination with same name
//as the source directory
newDir.mkdirs();
}
Благодаря этому я смог записать файл с флешки на рабочий стол. Вот что выдала моя программа:
Input directory to be copied./Volumes/DJ BLU-Z/Letters to Palmer
Input destination where directory will be moved to./Users/Zhughes3/Desktop
BUILD SUCCESSFUL (total time: 22 seconds)
Он добавил каталог Volumes на мой рабочий стол. Однако я хочу, чтобы он отправил каталог «Письма Палмеру» на мой рабочий стол.
Любые советы людей?
-------------------------------- РЕДАКТИРОВАТЬ № 2 с правильным ответом ----------- ----------------------- Вот изменения, которые я внес во второй метод моей программы, которые позволили мне записать введенный пользователем каталог в новое место назначения .
public static void createDir (String source, String dest) throws Exception{
//Create File objects for the source directory and new destination
File sourceFile = new File (source);
File newDest = new File (dest);
//Create new File object using the File object of the new destination
//and the last name in the pathname's name sequence of the source Dir
File newDir = new File (newDest, sourceFile.getName());
//Create a new directory in new user-inputted destination with same name
//as the source directory
newDir.mkdir();