برخی از عملیات فایل در ویندوز برای امنیت و سازگاری در بهروزرسانی آینده جاوا تغییر کردهاند.
بهعنوان بخشی از یک برنامهٔ ارتقاء کیفیت، برخی تغییرات در انتشار برنامهریزیشدهٔ Java ۲۵ در رابطه با عملیات فایل در ویندوز در حال آمدن است. دستور
File.delete
دیگر فایلهای فقطقابلخواندن را در ویندوز حذف نمیکند و عملیات فایل بر روی مسیرهایی که در نام پوشه یا فایل دارای فضای انتهایی هستند، اکنون بهصورت مداوم در ویندوز شکست میخورند.
در یک بولتن ۱۶ ژوئن در وبلاگ inside.java اوراکل، دیوید دلاباسی، مدیر روابط جاوا در اوراکل، گفت که
File.delete
در JDK ۲۵ در ویندوز تغییر کرده است بهگونهای که اکنون هنگام تنظیم ویژگی فقطقابلخواندن DOS برای فایلهای معمولی، اجرا ناموفق میشود و مقدار
false
را برمیگرداند. پیش از JDK ۲۵،
File.delete
فایلهای فقطقابلخواندن را با حذف ویژگی فقطقابلخواندن DOS قبل از تلاش برای حذف، حذف میکرد. اما بهدلیل اینکه حذف ویژگی و حذف فایل یک عملیات اتمیک نیستند، میتوانست منجر به باقی ماندن فایل با ویژگیهای تغییر یافته شود. برنامههایی که به رفتار قبلی متکی بودند باید پیش از حذف فایلها، ویژگیهای فایل را پاک کنند، گفت دلاباسی.
برای آسانتر شدن انتقال، یک ویژگی سیستم معرفی شده است تا رفتار قبلی را بازگرداند. اجرای
File.delete
با
-Djdk.io.File.allowDeleteReadOnlyFiles=true
ویژگی فقطقابلخواندن DOS را پیش از حذف فایل حذف میکند و رفتار ارثی را بازمیگرداند.
همچنین در JDK ۲۵، عملیات فایل بر روی مسیری که در نام پوشه یا فایل دارای فضای انتهایی است، اکنون بهطور مداوم در ویندوز شکست میخورد. برای مثال،
File::mkdir
مقدار
false
را برمیگرداند یا
File::createNewFile
یک
IOException
پرتاب میکند، اگر عنصری در مسیر دارای فضای انتهایی باشد، زیرا چنین نامهای مسیری در ویندوز قانونی نیستند. پیش از JDK ۲۵، عملیات روی فایلی که از چنین نام مسیر انتزاعی غیرقانونی ایجاد میشد، ممکن بود بهظاهر موفق به نظر برسد در حالی که در واقع ناخامش میآمد، گفت دلاباسی.
اکنون در مرحلهٔ کاهش، JDK ۲۵، نسخهٔ پشتیبانی طولانیمدت (LTS)، قرار است بهطور عمومی در ۱۶ سپتامبر در دسترس باشد.
پست های مرتبط
جاوا ۲۵ برای تغییر رفتارهای عملیات فایل در ویندوز
جاوا ۲۵ برای تغییر رفتارهای عملیات فایل در ویندوز
جاوا ۲۵ برای تغییر رفتارهای عملیات فایل در ویندوز