File'ın getAbsolutePath yönteminde geçerli çalışma dizini üzerinde karışıklık
Dosyanın getAbsolutePath'i, dosya yapıcısında göreceli bir yol veya sadece dosya adı sağlanırsa, mevcut çalışma dizininin önüne ekleyerek mutlak yolu çözme eğilimindedir.
Mevcut çalışma dizininin tanımı, Java Programımızı çalıştırdığımız dizindir. Örneğimde, java programım içerideD:\my-app\src\App.java
Yaptığım zaman System.out.println(System.getProperty("user.dir"));
O zaman ideal olarak yazdırmalı D:\my-app\src
Ama aslında yazdırıyor D:\my-app
Neden böyle?
Yanıtlar
IntelliJ'den bir uygulama başlattığınızda, çalışma dizini "Çalıştır / Hata Ayıklama Yapılandırmaları" iletişim kutusundaki "Çalışma dizini" içinde ayarlananlara göre ayarlanır .
There, you can set the working directory to a fixed value such as D:\my-app\src
. Another option is to use a path variable. The list of variables that are available apparently can depend on many things - open the dialog and see what's available. One option that I see is $FileDir$
which I imagine would be the directory of the source code file.
I think I found the solution. Intellij was actually causing the issue by implicitly setting the src folder as the source folder. I found it by going to the module setting within Intellij. When I ran the same from a command prompt, the correct working directory i.e. D:\my-app\src\
is selected.