1

明天我有一个编程迷你比赛,我们将被要求在给定的闪存驱动器上创建我们的程序。评委不会编辑我们的代码,所以它运行,我担心闪存驱动器号会改变,然后我的程序将无法找到它需要读入的文本文件。

我一直使用这样的闪存驱动器路径:

FileReader file = new FileReader("E:/BPA/Crypto/input.txt");

有没有办法让我保证我的程序能够读取文本文件,尽管我的闪存驱动器的字母名称在法官计算机上与我的不同?谢谢!

4

2 回答 2

3

您可以

  1. 将文件放入您的资源中
  2. 用于Class.getResourceAsStream(String name)获取InputStream文件

例如,如果你有课x.y.z.A

  1. 复制input.txt到 src 文件夹到 x/y/z 包中
  2. 获取对应InputStreamReaderInputStreamReader fileStream = new InputStreamReader(A.class.getResourceAsStream("input.txt"));
于 2017-01-13T00:56:12.163 回答
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 循环时,变量“驱动器”将包含你想要的驱动器的正确字母。您可以将其修改为返回字母或文件路径的函数,或者在尝试从文本文件中读取时仅使用一次。由你决定。

于 2017-01-13T00:56:26.430 回答