Mentre cercavo come fare, ho trovato una vaga discussione su diverse opzioni, come JNI vs JNA, ma non molto in termini di esempi concreti.Qual è il modo più semplice per chiamare una funzione del kernel di Windows da Java?
Contesto: se Java di File.renameTo()
non può fare il suo lavoro (per qualsiasi motivo; it is a little problematic), vorrei ricadere direttamente utilizzando questa funzione nativa di Windows, che è definita in kernel32.dll (from this answer):
BOOL WINAPI MoveFile(
__in LPCTSTR lpExistingFileName,
__in LPCTSTR lpNewFileName
);
Quindi, usando qualsiasi approccio, come si chiamerebbe esattamente quella funzione all'interno del codice Java? Sto cercando il modo più semplice, con la quantità minima di codice non Java o passaggi aggiuntivi (ad esempio in compilazione o distribuzione).
Ok, ma * come * chiamare direttamente MoveFileW? Come suggerisce Matthew Flaschen, o cosa? Alcune righe di codice di esempio (come l'uso di Native.loadLibrary(), ecc.) Sarebbero apprezzate. – Jonik
Hai controllato il mio esempio di lavoro? – jitter
Grazie per l'esempio JNA! A proposito, come sarebbe l'interfaccia per MoveFileA (menzionato nella risposta di jitter)? Semplicemente usare "MoveFileA" invece di "MoveFileW" non andava bene. Sto davvero cercando di spostare/rinominare una directory, e non ho potuto farlo funzionare con questo - anche se non sono sicuro che sia a causa di MoveFileW o qualcos'altro. – Jonik