连接用户输入字符串转换为完整的文件路径(Java)

时间:2015-11-04 03:09:02

标签: java file io concatenation

我写了一个简短的脚本来创建一个文件到我的桌面,然后出现了文件。我只是在主要方面完成了所有工作,如下:

    import java.io.*;
    import java.util.Scanner;
public class FilePractice {
  public static void main(String[] args) {

    //create a new File object
    File myFile = new File("/home/christopher/Desktop/myFile");

    try{
        System.out.println("Would you like to create a new file? Y or N: ");
        Scanner input = new Scanner(System.in);
        String choice = input.nextLine();
        if(choice.equalsIgnoreCase("Y"))
        {
            myFile.createNewFile();
        }
        else
        {
            //do nothing
        }
    }catch(IOException e) {
        System.out.println("Error while creating file " + e);
    }
    System.out.println("'myFile' " + myFile.getPath() + " created.");
  }
}

我只是想确保代码能够正常运行。之后,我想通过创建一个带有用户输入的文件来扩展,以及定义用户希望将文件发送到哪个目录。我在Linux机器上,我想再次将它发送到我的桌面,所以我的用户输入是" / home / christopher / Desktop"对于userPath。没啥事儿。我甚至通过终端点击我的桌面到" ls"那里的一切,仍然没有。

也许我的语法错了?

如果这是任何事情的重复,我道歉。在来到这里之前我试图进行彻底搜索,但我只找到了创建文件和将文件发送到已定义为字符串的目录的信息(例如File myFile = new File(" / home / User / Desktop / MyFileName的&#34))。

以下是扩展尝试:

try {
       System.out.println("Alright. You chose to create a new file.\nWhat would you like to name the file?");
            String fileName = input.nextLine();
            input.nextLine();
            System.out.println("Please enter the directory where you would like to save this file.\nFor example: C:\\Users\\YourUserName\\Documents\\");
            String userFilePath = input.nextLine();
            File userFile = new File(userFilePath, fileName);
            System.out.println("Is this the file path you wish to save to? ----> " + userFile.getPath()+"\nY or N: ");
            String userChoice = input.nextLine();

            if (userChoice.equalsIgnoreCase("Y")) {
                userFile.createNewFile();
                //print for debug 
                System.out.println(userFile.getPath());
               }
            }catch(IOException e) {
                System.out.println("Error while attempting to create file " + e);
            }
            System.out.println("File created successfully");

我的调试尝试的print语句输出" / home / christopher / Desktop",但不是附加到目录的文件名。

感谢您提供的任何帮助。这只是在学习Java I / O时进行实验。由于假设用户可能与我在同一个操作系统上,我可以稍后处理这些方法。我将它保存在我的家用机器上,因此是Unix文件路径名称。

1 个答案:

答案 0 :(得分:0)

将input.nextLine()更改为input.next()解决了问题。在询问用户是否确定其输入的路径是所需的保存点后,程序未到达if语句。

我还输入了一个简单的else语句,打印出来(“File not created”)以验证它是否正在跳过它。

无论如何,问题回答了。 : - )