Sto lavorando a un progetto e un requisito è se il secondo argomento per il metodo main inizia con '/' (per linux) dovrebbe considerarlo come un percorso assoluto (non un problema) , ma se non inizia con '/', dovrebbe ottenere il percorso di lavoro corrente della classe e aggiungervi l'argomento dato.Ottenere il nome della classe corrente incluso il pacchetto
posso ottenere il nome della classe in diversi modi: System.getProperty("java.class.path")
, new File(".")
e getCanonicalPath()
, e così via ..
Il problema è, questo mi dà solo la directory in cui sono archiviati i pacchetti - vale a dire se ho una classe memorizzata in ".../project/this/is/package/name", mi darebbe solo "/ project /" e ignora il nome del pacchetto in cui si trovano i file .class effettivi.
Qualche suggerimento?
EDIT: Ecco la spiegazione, preso dalla descrizione esercizio
sourcedir può essere sia assoluta (che inizia con “/”) o relativa al punto in cui si corre il programma dal
SourceDir è un argomento dato per il metodo principale. come posso trovare quel percorso?
Cosa farai se il codice è impacchettato in un JAR (o altrimenti non è in una cartella/struttura di file come stai assumendo)? È un presupposto pericoloso; questo potrebbe funzionare bene per un piccolo esperimento, assegnazione di classe o altra situazione usa e getta, ma PER FAVORE non prendere l'abitudine di fare questo presupposto per il codice di qualità di produzione. –
Non ha senso trovare il percorso del file di classe.Anche la descrizione dell'esercizio non menziona che se la leggi attentamente (* dove eseguiamo il programma da * indica il percorso corrente dal quale il programma viene chiamato dall'utente). –
Forse potresti aiutarmi a capire meglio il requisito? Ho bisogno di controllare l'argomento inizia con un '/' (menzione nella descrizione). se lo fa, basta usarlo come assoluto. come è. ma se non lo fa, come dovrei trattarlo? –