Sto tentando di creare un oggetto File Java in base a un nome file fornito dall'utente (potrebbe essere assoluto o relativo) e una directory di base dipendente dall'ambiente. Il doc java per java.io.File (genitore File, String bambino) dice il seguente:java.io.File (genitore, figlio) non funziona come previsto
Se la stringa bambino percorso è assoluto allora viene convertito in un percorso relativo in un modo dipendente dal sistema.
che mi fece pensare che se ho il seguente codice:
public class TestClass {
public static void main(String[] args) throws IOException {
File file = new File(new File("C:/Temp"),"C:/Temp/file.txt");
System.out.println(file.getAbsolutePath());
}
}
l'uscita sarebbe
C:\Temp\file.txt
e poi sarei nel mondo degli affari, perché non sarebbe davvero importa più se l'utente ha fornito un percorso assoluto o relativo. Ma in realtà, l'uscita è
C:\Temp\C:\Temp\file.txt
Il che significa che devo capire il percorso relativo esatto (o almeno prova diverse opzioni per vedere se il file esiste). Sto fraintendendo il JavaDoc?
Il percorso del percorso figlio deve essere un percorso relativo. La conversione parla di barre e barre retroverse, penso. Nel tuo caso, dovresti capire se il percorso è assoluto prima di procedere. – Thilo
Il comportamento è lo stesso se si utilizza il (più corretto) '" C: \\ Temp "' e '" C: \\ Temp \\ file.txt "' invece di utilizzare le interazioni in avanti? Al momento non ho un PC Windows con JDK installato, quindi non posso testarlo. Inoltre: cosa significa 'nuovo file (" C:/Temp "). IsAbsolute()' stampa? –
@Joachim: Sia '" C:/Temp "' che '" C: \\ Temp "' sono trattati allo stesso modo. 'new File (" C:/Temp "). isAbsolute()' stampa 'true'. – Geert