相对与绝对路径Java

时间:2017-01-13 00:31:01

标签: java file-io usb text-files usb-flash-drive

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

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

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

我是否有办法保证我的程序能够读取文本文件,尽管我的闪存驱动器的字母名称在我的评判计算机上是不一样的?谢谢!

2 个答案:

答案 0 :(得分:3)

你可以

  1. 将文件放入您的来源
  2. 使用Class.getResourceAsStream(String name)获取文件的InputStream
  3. 例如,如果您有课程x.y.z.A

    1. input.txt复制到src文件夹到x / y / z包
    2. 获取相应的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"将包含您想要的驱动器的正确字母。您可以将其修改为返回字母或文件路径的函数,或者只要您尝试从文本文件中读取一次就使用它。由你决定。