所以我有以下代码将用户输入作为文件名的String输入,并将其输入Scanner对象。
System.out.print("What is the name of the input file?");
String name = scan.nextLine();
Scanner file = new Scanner(new File(name));
放置文件以便可以访问的正确位置是什么。我是否必须将文件保存在与此项目相同的文件夹中,或者是否可以将它们放在不同的文件夹中,并且仍然可以引用它。如果有帮助,我正在使用mac。
答案 0 :(得分:0)
我是否必须将该文件保存在与此项目相同的文件夹中 是否可以将它们放在不同的文件夹中,仍然可以 参考它。
您可以将其保留在计算机的任何位置(前提是您对要尝试访问的目录具有有效的读取权限)。
Scanner file = new Scanner(new File(name));
当您的文件位于当前目录中时,这将起作用,否则您必须提供完整的路径。
更新:如何提供完整路径:
import java.util.*;
import java.io.*;
public class TestFile
{
public static void main(String str[]) throws Exception
{
try
{
System.out.print("What is the name of the input file?");
Scanner scan = new Scanner(System.in);
String name = scan.nextLine();
File file = new File("/Users/jaine03/Desktop/"+name);
System.out.println(file.exists());
}catch(Exception ex)
{
ex.printStackTrace();
}
}
}
<强>输出强>
What is the name of the input file?
TestFile.java
true
答案 1 :(得分:0)
区分相对路径和绝对路径非常重要。
您可以将它放在CLASSPATH下,例如在“resources”目录中。
或者您可以使用绝对路径并引用每个可访问文件。
new File("c:\\path\\file.dat")
new File("/path/file.dat")
但最好使用元描述或API,如java.nio.file.Paths,以获取有关当前工作目录的信息,这将使应用程序更具可移植性和强大性。
以下示例将应用程序当前目录路径作为String:
Paths.get(".").toAbsolutePath().normalize().toString();
另请参阅java.nio.file.Path中的API(例如https://docs.oracle.com/javase/7/docs/api/java/nio/file/Path.html):