Java 缩短.txt位置以使用扫描仪读取?

Java 缩短.txt位置以使用扫描仪读取?,java,function,Java,Function,对于一个班级项目,我必须用扫描器阅读一个.txt文件,让它工作得很好。我的教授唯一不高兴的是,我的代码对.txt文件的路径进行了硬编码,例如: Scanner sc = new Scanner(new File("Users/Me/Documents/Programming/code.txt")); 这意味着它将只读取文件,如果它位于确切的文件夹。不管怎么说,我想知道的是,如何让扫描仪搜索我的文档并读取文件,而不将其放在确切的文件夹中,使其看起来像这样 Scanner sc = new Sca

对于一个班级项目,我必须用扫描器阅读一个
.txt
文件,让它工作得很好。我的教授唯一不高兴的是,我的代码对
.txt
文件的路径进行了硬编码,例如:

Scanner sc = new Scanner(new File("Users/Me/Documents/Programming/code.txt"));
这意味着它将只读取文件,如果它位于确切的文件夹。不管怎么说,我想知道的是,如何让扫描仪搜索我的文档并读取文件,而不将其放在确切的文件夹中,使其看起来像这样

Scanner sc = new Scanner(new File("code.txt"));
我听说这有点像在.txt文件名中添加一个
“\”
,但我不太确定。

只要code.txt在同一目录中,“code.txt”就可以正常工作

否则“./code.txt”会将您带到上一个目录,依此类推

只要code.txt在同一目录中,“code.txt”就可以正常工作


否则“./code.txt”会将您带到上一个目录,依此类推

我想你的教授是想把命令行参数传递给你的Java程序。还记得
静态void main
签名中的
字符串[]args
吗?这是他可能希望你使用的机制,因为它是最灵活的机制

由于可以在命令行上向程序传递任意数量的字符串,因此可以约定第一个参数是用户希望程序打开的文件名

static public void main(String[] args) {
    if (args.length < 1) {
        System.err.println("Please pass a file name argument.");
        return;
    }
    Scanner sc = new Scanner(new File(args[0]));
    // ... do something useful
}
static public void main(字符串[]args){
如果(参数长度<1){
System.err.println(“请传递一个文件名参数。”);
返回;
}
Scanner sc=新扫描仪(新文件(args[0]);
//…做些有用的事
}

我想你的教授是想把命令行参数传递给你的Java程序。还记得
静态void main
签名中的
字符串[]args
吗?这是他可能希望你使用的机制,因为它是最灵活的机制

由于可以在命令行上向程序传递任意数量的字符串,因此可以约定第一个参数是用户希望程序打开的文件名

static public void main(String[] args) {
    if (args.length < 1) {
        System.err.println("Please pass a file name argument.");
        return;
    }
    Scanner sc = new Scanner(new File(args[0]));
    // ... do something useful
}
static public void main(字符串[]args){
如果(参数长度<1){
System.err.println(“请传递一个文件名参数。”);
返回;
}
Scanner sc=新扫描仪(新文件(args[0]);
//…做些有用的事
}

如果这是一个Java应用程序,请尝试

Scanner sc = new Scanner(new File(args[0]));
并提供文件名作为第一个命令行参数


当然,这只适用于在
main
方法等中创建扫描仪的情况。您还应该检查
args.length
以确保参数存在等。

如果这是Java应用程序,请尝试

Scanner sc = new Scanner(new File(args[0]));
并提供文件名作为第一个命令行参数

当然,这只适用于在
main
方法等中创建扫描仪的情况。您还应该检查
args.length
以确保参数存在等

  • 如果此文本文件是在运行时指定的,请从提供给main的arguments数组中读取它
  • 如果它是嵌入式(常量)应用程序资源,请使用以下方式获取指向它的URL:

  • 如果此文本文件是在运行时指定的,请从提供给main的arguments数组中读取它
  • 如果它是嵌入式(常量)应用程序资源,请使用以下方式获取指向它的URL:


  • 如果你真的想让你的程序搜索一个文件名并得到它,请修改这里的一个答案


    您可以指定搜索位置,然后递归地查看所有文件,直到获得所需的文件名。然后对文件做任何你想做的事。还可以看看是否允许使用Swing组件

    如果你真的想让你的程序搜索一个文件名并得到它,请从这里修改一个答案


    您可以指定搜索位置,然后递归地查看所有文件,直到获得所需的文件名。然后对文件做任何你想做的事。还可以看看是否允许使用Swing组件

    好的,我很确定以下是你的教授想要的,因为我被分配了同样的任务

    与其将包含文件名的
    文件
    实例传递到
    扫描仪
    ,为什么不使用
    扫描仪
    读取文件名,创建一个单独的
    文件
    实例,并将
    扫描仪
    读取的文件名传递给它

    Scanner input = new Scanner(System.in);
    String fileName = input.nextLine();
    
    Scanner scan = new Scanner(new File(fileName));
    
    用户仍将负责提供文件的完整路径,但至少现在它是用户输入的内容,并且没有像您在示例中所显示的那样硬编码到程序中


    我很确定这就是你的教授让你写这个程序的意思

    好的,我很确定以下是你的教授想要的,因为我被分配了同样的任务

    与其将包含文件名的
    文件
    实例传递到
    扫描仪
    ,为什么不使用
    扫描仪
    读取文件名,创建一个单独的
    文件
    实例,并将
    扫描仪
    读取的文件名传递给它

    Scanner input = new Scanner(System.in);
    String fileName = input.nextLine();
    
    Scanner scan = new Scanner(new File(fileName));
    
    用户仍将负责提供文件的完整路径,但至少现在它是用户输入的内容,并且没有像您在示例中所显示的那样硬编码到程序中


    我很确定这就是你的教授让你写这个程序的意思

    无论哪种方式,
    code.txt
    都必须存在于特定位置。对于第一个示例,它必须位于该相对路径,在第二个示例中,它必须位于工作目录中。也许你的教授希望你允许用户输入文件的位置?@Jeffrey也许他希望
    %UserProfile%
    解析为当前用户的ho