我明天有一个编程迷你竞赛,我们将被要求在闪存驱动器上创建我们的程序。评委不会编辑我们的代码,因此它会运行,我担心闪存驱动器号会改变,然后我的程序将无法找到它需要读取的文本文件。
我一直使用闪存驱动器的路径:
FileReader file = new FileReader("E:/BPA/Crypto/input.txt");
我是否有办法保证我的程序能够读取文本文件,尽管我的闪存驱动器的字母名称在我的评判计算机上是不一样的?谢谢!
答案 0 :(得分:3)
你可以
Class.getResourceAsStream(String name)
获取文件的InputStream
例如,如果您有课程x.y.z.A
input.txt
复制到src文件夹到x / y / z包InputStreamReader
作为InputStreamReader fileStream = new InputStreamReader(A.class.getResourceAsStream("input.txt"));
答案 1 :(得分:0)
如果你不确定该文件是什么驱动器,你可以做这样的事情
char drive = 'A';
String filePath = ":/BPA/Crypto/input.txt";
while(drive != 'Z')
{
try{
Scanner readFromFile = new Scanner(new File(drive + filePath));
readFromFile.close(); //add this if you simply want the path or drvie letter
break;
}catch(FileNotFoundException error)
{
System.out.println("Drive: " + drive + " did not contained file in " + drive + filePath);
}
drive += 1;
}
基本上我的想法是尝试打开文件,从A到Y开始从不同的驱动器读取。显然你可以走得更远,但我会假设驱动器AY可以安全地耗尽所有可能的驱动器正在运行你的软件。
当你得到我们的While循环变量" drive"将包含您想要的驱动器的正确字母。您可以将其修改为返回字母或文件路径的函数,或者只要您尝试从文本文件中读取一次就使用它。由你决定。