0

我是 Java 新手,正在从事一个项目以提高我的技能并需要一些帮助。

我有一个文件,让我们调用它tools.extension,它必须转到一个已经有tools.extension文件的目录。我希望我的代码检查它是否tools.extension存在,如果存在,将其重命名为tools(currentdate).extension.

所以我尝试了这个来测试逻辑:

Scanner myS = new Scanner(System.in);
        Path path = Paths.get(myS.nextLine());
        Path file = Files.createFile(path);
        Path path1 = Paths.get(myS.nextLine());
        Path file1 = Files.createFile(path1);

       if (file.getFileName() == file1.getFileName())

       {
           System.out.println("file already exists");
       }

       else
       {
           System.out.println("File doesn't already exist");
       }

       Files.delete(file);
       Files.delete(file1);

但是当然后来我意识到某处会出现异常,但我只是想试试这个来检查我的逻辑。

我总是得到file doesn't already exist

即使我text.txt在不​​同的目录中创建两个文件也不行。它不认为它们具有相同的名称,即使当我 print 时getFileName(),它们都是!

有人可以给我一些建议或指点我一个对我有帮助的教程吗?

真的非常感谢你!

编辑:

非常感谢您提醒我 .equals,它正在工作!

我还有一个问题,我该如何重命名文件或文件1?它们是我不知道的路径。

我应该使用 toFile() 方法然后使用 renameTo() 吗?

4

3 回答 3

1

if (file.getFileName() == file1.getFileName())是错误。

.equals(...)您应该使用方法比较字符串。

于 2013-02-14T09:35:49.797 回答
0

只需使用

if(file.getFileName().equals(file1.getFileName())){
  //file exist
  }
于 2013-02-14T09:39:44.400 回答
0

我不知道你背后有什么,但关于File APIFiles.createFile(path);的一些重要的事情:

File.exists()必须用于检查file文件系统中是否存在。

返回一个布尔值,File.delete()告诉您调用是否成功。

您可以随意创建 File 对象,但这并不意味着该文件是在文件系统上创建的。

要在文件系统上创建文件,您需要调用 : File.createNewFile()。此方法再次返回一个布尔值,告诉您创建是否成功。

File.renameTo(anotherFile)用于重命名文件。它再次返回一个布尔值,告诉您重命名是否成功。

玩文件时的一个常见错误是忘记检查所有这些文件系统操作的结果......所以不要忘记它。

于 2013-02-14T09:44:52.923 回答