Avatar billede thundergod Nybegynder
20. januar 2005 - 16:28 Der er 14 kommentarer og
1 løsning

Simpel metode til at afgøre om en path indeholder et filnavn

Nogen der har en enkel måde at afgøre om en string indeholder et filnavn i slutningen?

Filen skal ikke nødvendigvis findes, så det er ren String sammenligning..

En path kunne f.eks. være:
\\\\10.0.0.1\\share\\folder\\subfolder\\file.ext
eller
\\\\servername\\share\\folder\\subfolder\\file.ext
Avatar billede thundergod Nybegynder
20. januar 2005 - 16:29 #1
Og en path uden filnavn kunne være:

\\\\10.0.0.1\\share\\folder\\subfolder\\
eller
\\\\10.0.0.1\\share\\folder\\subfolder
eller
\\\\servername\\share\\folder\\subfolder\\
eller
\\\\servername\\share\\folder\\subfolder
Avatar billede arne_v Ekspert
20. januar 2005 - 16:31 #2
(new File(path)).isDirectory()
(new File(path)).isFile()

måske
Avatar billede thundergod Nybegynder
20. januar 2005 - 16:31 #3
Tjekker den ikke om filen er tilgængelig?
Avatar billede thundergod Nybegynder
20. januar 2005 - 16:33 #4
Svar på eget udsagn.. Jo, ifølge javadoc i hvert fald..
Avatar billede thundergod Nybegynder
20. januar 2005 - 16:33 #5
Har du en anden god String sammenlignings algoritme måske arne??
Avatar billede Slater Ekspert
20. januar 2005 - 16:34 #6
Hvis en fil SKAL indeholde en extension (med punktum), kan du jo tjekke for indexOf, og finde ud af om der findes et punktum efter den sidste backslash.
Avatar billede arne_v Ekspert
20. januar 2005 - 16:34 #7
Det er et problem hvis de ikke eksisterer.

(new File(path)).getName().equals("")

er en mulighed.
Avatar billede arne_v Ekspert
20. januar 2005 - 16:36 #8
Problemet er syntaxen:

\dir\xxx

hvis xxx ikke eksisterer så er der ingen sikker måde at afgøre om det er
et dir eller en fil.

(samme grund at XCOPY spørger om det iøvrigt)
Avatar billede arne_v Ekspert
20. januar 2005 - 16:36 #9
viperine>

Du kan sagtens have et dir med "." i navnet.
Avatar billede Slater Ekspert
20. januar 2005 - 16:38 #10
arne_v -> ved det... :/ men som du selv siger, det er et problem, hvis de ikke eksisterer. På den måde var det sgu nemmere i gamle dage, med ISO1, 8.3 format filnavne ;)
Avatar billede thundergod Nybegynder
20. januar 2005 - 16:43 #11
Jeg troede at jeg istedet kunne tage det punktum der er efter sidste \.
Mine filnavne har altid punktum.
Men så må man jo bare håbe at der ikke er punktum i sidste mappenavn...
:-)
Andre idéer?
Avatar billede arne_v Ekspert
20. januar 2005 - 16:49 #12
import java.io.*;

public class DF {
    public static void test(String path) {
        System.out.println(path);
        File f = new File(path);
        System.out.println(!f.isDirectory());
        System.out.println(f.isFile());
        System.out.println(!f.getName().equals(""));
        System.out.println(f.getName().indexOf(".") > 0);
    }
    public static void main(String[] args) {
        test("\\dir\\subdir\\fil.typ");
        test("\\dir\\subdir\\fil");
        test("\\dir\\subdir\\");
        test("\\dir\\subdir");
        test("\\dir\\sub.dir");
    }
}

giver:

\dir\subdir\fil.typ
true
false
true
true
\dir\subdir\fil
true
false
true
false
\dir\subdir\
true
false
true
false
\dir\subdir
true
false
true
false
\dir\sub.dir
true
false
true
true
Avatar billede thundergod Nybegynder
20. januar 2005 - 16:50 #13
OK, nu har jeg fundet ud af mit problem...
På en MAC (OSX) giver new File(path).getName() IKKE kun den sidste del...
Det virker ellers fint på Windows..
Meget mærkeligt..
Men så er det jo også MAC.
Nogen idéer til at komme uden om dette?
Eller links til at fixe lignende problemer med MAC of File..??
Avatar billede thundergod Nybegynder
20. januar 2005 - 16:51 #14
Tak for kodeeksemplet arne, smid et svar og du får point.
Men Problemet er altså stadig der, men det er så bare MAC OS X versionen af Java der driller mig...
Avatar billede arne_v Ekspert
20. januar 2005 - 19:22 #15
svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester