در این جلسه تیم کدگیت را با آموزش کپی کردن فایل در جاوا با FileChannel همراهی کنید. پیش نیاز این آموزش شامل موارد زیر است:
فایل
در فرهنگ رایانه، پرونده یا فایل: به کوچکترین واحد منطقی ذخیرهسازی بر روی دیسک گفته میشود که کاربر یا برنامهساز، قادر به مشاهده و دستکاری آن است.
در یک تعریف کلی، فایل مجموعهای است دارای یک نام (و معمولاً دارای یک ساختار درونی مشخص) از نمونههای مختلف یک یا چند نوع رکورد. البته ممکن است فایل اصلاً مجموعهای از رکوردها نباشد، بلکه صرفاً دنبالهای بیساختار از نویسهها باشد که از نظر سیستم فایل، معنای خاصی هم ندارند.
تعریف بالا در سایت ویکیپدیا آمده است.
فایلها به دسته های مختلفی تقسیم میشوند:
- فایل متنی
- فایل صوتی
- فایل تصویری
- فایل اجرایی
در این آموزش یک فایل متنی را با استفاده از جاوا کپی میکنیم.
کتابخانه NIO
کتابخانه nio که مخفف new i/o است به برنامه نویسان احازه میدهد که عملیات های i/o را با سرعت بسیار بالایی انجام دهند بدون آنکه کد زیادی را بزنند. کتابخانه nio بسیاری از فعالیت های زمانبر را به عهده سیستم عامل میگذارد.به همین دلیل است که سرعت بالایی دارد.
کتابخانه nio جایگرینی برای کتابخانه io نیست بلکه مکمل این کتابخانه نیز هست. برای استفاده از کتابخانه nio نیاز به ورژن 7 به بالای جاوا دارید.
کپی کردن فایل در جاوا با FileChannel
برای کپی کردن فایل در جاوا با FileChannel نیاز به inputstream و outputstream داریم. در جاوا کلاسی به FileChannel وجود دارد که ورودی این کلاس inputstream یا outputstream است. این کلاس متدی به نام transferfrom دارد که با آن محتویات یک فایل را به فایل دیگری انتقال میدهد.
private static void copyFileUsingFileChannels(File source, File dest)
throws IOException {
FileChannel inputChannel = null;
FileChannel outputChannel = null;
try {
inputChannel = new FileInputStream(source).getChannel();
outputChannel = new FileOutputStream(dest).getChannel();
outputChannel.transferFrom(inputChannel, 0, inputChannel.size());
} finally {
inputChannel.close();
outputChannel.close();
}
}
همانطور که در کد کپی کردن فایل در جاوا با FileChannel میبینید ما دو filechannel ساختیم و محتویات یکی را به دیگری انتقال دادیم. ورودی متد دو فایل مبدا و مقصد است. از این فایل ها برای کپی استفاده میشود.
تست کپی کردن فایل در جاوا با FileChannel
برای تست کد های بالا، کد main زیر را بزنید.
public static void main(String[] args) {
File source = new File("src.txt");
File dest = new File("dest.txt");
try {
copyFileUsingFileChannels(source, dest);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}