Спросите пользователя для исходного каталога и места назначения; сделать новый каталог

1

Это один шаг программирования, с которым у меня были проблемы в течение последних нескольких недель. Я переписываю свой код, чтобы попытаться заставить его работать.

Первым шагом, над которым я работаю, является: Создать новый каталог с тем же именем, что и исходный каталог, но в новом месте назначения.

Как вы можете видеть по моему коду, я спрашиваю у пользователя имя исходного каталога и для адресата, к которому пользователь хочет, чтобы этот каталог был скопирован. В конце концов, я скопирую весь каталог (включая подкаталоги и файлы) в новый каталог в новом местоположении, которое вводит пользователь.

Вот мой код. Я попытался скопировать что-то с моего флеш-накопителя на свой рабочий стол, но это не сработало.

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, потому что я не понимаю, как синтаксис работает из-за путей и имен файлов. Мне очень трудно понять это. Является ли мой код неправильным? Есть ли какие-либо инструкции/советы, которые кто-нибудь может мне дать по этому поводу.

Цель состоит в том, чтобы попросить пользователя для исходного каталога и нового адресата, для которого он хочет, чтобы каталог был скопирован. Теперь моя цель - просто создать новый каталог в новом месте назначения с тем же именем, что и источник.

Принимая это один шаг за раз, чтобы понять это полностью.

Любая помощь будет принята с благодарностью. Спасибо, парни.

------------------------------------------EDIT # 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 на мой рабочий стол. Тем не менее, я хочу, чтобы он отправил каталог "Письма в Палмер" на мой рабочий стол.

Любые советы людям?

--------------------------------EDIT # 2 w/Correct Answer---------------------------------- Ниже приведены изменения, внесенные мной во второй метод моей программы, который позволил мне записать каталог, введенный пользователем, в новый пункт назначения.

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 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();
Теги:
directory
file
mkdir

1 ответ

0
Лучший ответ

Что вам нужно сделать, это преобразовать исходный код и dest в файлы (new File(String)), а затем использовать new File(File,String) для создания конечной папки (помните, что для String вам нужно только имя, поэтому используйте destFile.getName()

  • 0
    Можете ли вы дать мне закодированный пример. Я взял то, что вы сказали, чтобы сделать это: 'File newSource = new File (source); Файл newDest = новый файл (dest); '
  • 0
    Хотя это можно было бы объяснить лучше, ваш совет помог мне прийти к правильному ответу. Я отредактировал свой вопрос, чтобы включить ответ.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню