Problem ze sciezka przy tworzeniu obiektu File

Problem ze sciezka przy tworzeniu obiektu File
J7
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 73
0

Mam dziwny problem.
Pisze pierwsze servlety w jee i napotkałem się z czyms takim po wpisaniu

Kopiuj
		File file = new File("‪C:\\Data\\wallpaper\\6.jpg");
		System.out.println(file.getAbsolutePath());

dosatje taka sciezke dostepu C:\Compilators\EclipseEE\‪C:\Data\wallpaper\6.jpg ??
C:\Compilators\EclipseEE jak mozna sie domyslec to umiejscowienie mojego eclipsa.
W dokumentacji o tym konstruktorze znalazlem

Kopiuj
File(String pathname)
Creates a new File instance by converting the given pathname string into an abstract pathname. If the given string is the empty string, then the result is the empty abstract pathname.

Skąd ta sciezka dostepu?

KL
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 191
0

Miałem dłuższą odpowiedź, ale mnie wykrzaczyło i utraciłem :c

Zajrzyj sobie tutaj, na początku masz opis prefixów.
https://docs.oracle.com/javase/8/docs/api/java/io/File.html#File-java.lang.String-

Bo ten string, który przekazujesz nie widzi, że C jest tutaj identyfikatorem partycji, więc traktuje to jako ścieżkę relatywną... Co się kończy właśnie takim potworkiem, jak Ci wyrzuca.
Najprawdopodobniej jest to wina tego, że używasz podwójnych "\" w każdym separatorze, a jeśli nie pójdzie redukcja o jeden(bo przecież to z reguły daje znaki specjalne w połączeniu z następnym znakiem, jeśli używasz pojedynczych), to spróbuj po literze dysku wsadzić cztery zamiast dwóch, jeśli dobrze rozumiem, to wtedy będzie zgodne z UNC i powinno przejść.

Ale głowy sobie obciąć nie dam, bo pora kiepska, a ja dziś od początku bredzę. Zajrzyj więc w docsa i poeksperymentuj, szybko znajdziesz przyczynę i rozwiązanie.

jarekczek
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Siemianowice Śląskie
  • Postów: 500
1

Jaja se robisz z ludzi :) Między " a C masz jakiegoś śmiecia, niewidzialny znak.

Kopiuj
jshell>         File file = new File("?C:\\Data\\wallpaper\\6.jpg");
file ==> ?C:\Data\wallpaper\6.jpg

jshell>         System.out.println(file.getAbsolutePath());
C:\Program Files (x86)\Java\jdk-9\bin\?C:\Data\wallpaper\6.jpg

edit2:
emacs, describe-char:

Kopiuj
             position: 3 of 7 (29%), column: 2
            character: ‪‬ (displayed as ‪‬) (codepoint 8234, #o20052, #x202a)
    preferred charset: unicode (Unicode (ISO10646))
code point in charset: 0x202A
               script: symbol
               syntax: . 	which means: punctuation
             category: L:Left-to-right (strong)
             to input: type "C-x 8 RET HEX-CODEPOINT" or "C-x 8 RET NAME"
          buffer code: #xE2 #x80 #xAA
            file code: #xE2 #x80 #xAA (encoded by coding system utf-8-dos)
              display: by this font (glyph code)
    uniscribe:-outline-Courier New-normal-normal-normal-mono-13-*-*-*-c-*-iso10646-1 (#x03)

Character code properties: customize what to show
  name: LEFT-TO-RIGHT EMBEDDING
  general-category: Cf (Other, Format)
  decomposition: (8234) ('‪')

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.