Если вы перейдете к JNA, подумайте о том, как использовать java- импорт . io . *; импорт com . солнце . jna . *; public class Ren { статический интерфейс Kernel32 расширяет библиотеку { public static Kernel32 INSTANCE = ( Kernel32 ) Native . loadLibrary ( "Kernel32" , Kernel32 . class ); public static int FORMAT_MESSAGE_FROM_SYSTEM = 4096 ; public static int FORMAT_MESSAGE_IGNORE_INSERTS = 512 ; public boolean MoveFileW ( WString lpExistingFileName , WString lpNewFileName ); public int GetLastError (); public int FormatMessageW ( int dwFlags , Pointer lpSource , int dwMessageId , int dwLanguageId , char [] lpBuffer , int nSize , Pointer Arguments ); } public static String getLastError () { int dwMessageId = Kernel32 . ИНСТАНЦИЯ . GetLastError (); char [] lpBuffer = новый char [ 1024 ]; int lenW = Kernel32 . ИНСТАНЦИЯ . FormatMessageW ( Kernel32 . FORMAT_MESSAGE_FROM_SYSTEM | Kernel32 . FORMAT_MESSAGE_IGNORE_INSERTS , нуль , dwMessageId , 0 , lpBuffer , lpBuffer . Длина , нуль ); return new String ( lpBuffer , 0 , lenW ); } public static void main ( String [] args ) throws IOException { String from = ". \ from.txt" ; String to = ". \ to.txt" ; новый FileOutputStream ( from ). close (); if (! Kernel32 . INSTANCE . MoveFileW ( новый WString ( from ), новый WString ( to ))) { throw new IOException ( getLastError ()); } } } - это избавляет от необходимости предоставлять информацию о конфигурации для выбора между вызовами Unicode и ANSI.
MoveFileA
EDIT: я отредактировал свой ответ после проверки кода - я ошибся в использовании char [] в сигнатуре - лучше использовать WString .