Giriş
Şu satırı dahil ederiz. Bu sınıf soyuttur. Gerçekleştiren sınıflar belirtilmiyor.
1. Bu sınıfın kardeşi AsynchronousFileChannel sınıfıdır.
2. Dosyanın işletim sistemi tarafından kilitlenmesini sağlar. Böylece aynı dosyaya başka uygulamanın erişmesi engellenebilir.
3. seek() ve position() çağrıları ile belirtilen konuma gitmek mümkün. Kullanması daha kolay olan olan RandomAccessFile Sınıfı da benzer şekilde seek() ve position() çağrıları sunuyor.
Yaratma
Normalde bu nesneyi yaratmak için open() metodu kullanılır. Ancak mevcut açık dosya sınıfları da bu nesnesi dönebilirler.
Örnek - FileInputStream
Şöyle yaparız.
Şöyle yaparız.
Şöyle yaparız.
Şöyle yaparız.
FileLock nesnesi oluşturur. Şöyle yaparız.
MappedByteBuffer nesnesi döner.
Örnek
Okumak için şöyle yaparız. İkinci parametre offset, üçüncü parametre length içindir.
Yazmak için şöyle yaparız.
Örnek
Okumak için şöyle yaparız.
Şöyle yaparız.
Örnek - WRITE
Yazmak için şöyle yaparız.
Mevcut dosyayı sıfırlama ve okuma ve yazma için şöyle yaparız.
Uygulama kapanırken dosya silinsi diye şöyle yaparız.
Şöyle yaparız.
Şöyle yaparız.
Destination Channel nesnesine, Source Channel nesnesinden kopyalama yapar. Şöyle yaparız.
FileChannel.transferTo yazısına taşıdım
Şu satırı dahil ederiz. Bu sınıf soyuttur. Gerçekleştiren sınıflar belirtilmiyor.
import java.nio.channels.FileChannel;
Önemli Notlar1. Bu sınıfın kardeşi AsynchronousFileChannel sınıfıdır.
2. Dosyanın işletim sistemi tarafından kilitlenmesini sağlar. Böylece aynı dosyaya başka uygulamanın erişmesi engellenebilir.
3. seek() ve position() çağrıları ile belirtilen konuma gitmek mümkün. Kullanması daha kolay olan olan RandomAccessFile Sınıfı da benzer şekilde seek() ve position() çağrıları sunuyor.
Yaratma
Normalde bu nesneyi yaratmak için open() metodu kullanılır. Ancak mevcut açık dosya sınıfları da bu nesnesi dönebilirler.
Örnek - FileInputStream
Şöyle yaparız.
FileChannel fc = new FileInputStream(...).getChannel();
Örnek - FileOutputStreamŞöyle yaparız.
FileChannel fc = new FileOutputStream(...).getChannel();
Örnek - RandomAccessFileŞöyle yaparız.
// Get a file channel for the file
File file = new File("filename");
FileChannel fc = new RandomAccessFile(file, "rw").getChannel();
close metoduŞöyle yaparız.
fc.close();
lock metoduFileLock nesnesi oluşturur. Şöyle yaparız.
FileChannel fc = ...;
// Use the file channel to create a lock on the file.
// This method blocks until it can retrieve the lock.
FileLock lock = fc.lock();
map metoduMappedByteBuffer nesnesi döner.
Örnek
Okumak için şöyle yaparız. İkinci parametre offset, üçüncü parametre length içindir.
MappedByteBuffer mbb = fc.map(MapMode.READ_ONLY, 0, 4l);
ÖrnekYazmak için şöyle yaparız.
MappedByteBuffer mbb = fc.map(
FileChannel.MapMode.READ_WRITE,
0, // offset
array.length * Integer.BYTES // length
);
open metodu - PathÖrnek
Okumak için şöyle yaparız.
String fname = ...;
try (FileChannel fc = FileChannel.open(Paths.get(fname))) {
...
} catch (IOException ex) {
...
}
Örnek - READŞöyle yaparız.
Path path = ...;
try (FileChannel fileChannel = FileChannel.open(path,StandardOpenOption.READ)) {
...
}
Örnek - Lock Dosyası
Lock dosyası için şöyle yaparız.// open/create test file
fc = FileChannel.open(file, StandardOpenOption.READ,
StandardOpenOption.WRITE, StandardOpenOption.CREATE,
StandardOpenOption.DELETE_ON_CLOSE
);
Örnek - WRITE
Yazmak için şöyle yaparız.
FileChannel fc = FileChannel.open(Paths.get("a.txt"),StandardOpenOption.WRITE);
Örnek - TRUNCATE_EXISTINGMevcut dosyayı sıfırlama ve okuma ve yazma için şöyle yaparız.
File file = ...;
try (FileChannel fc = FileChannel.open(
file.toPath(),
StandardOpenOption.READ,
StandardOpenOption.WRITE,
StandardOpenOption.CREATE,
StandardOpenOption.TRUNCATE_EXISTING
)) {
...
}
Örnek - DELETE_ON_CLOSEUygulama kapanırken dosya silinsi diye şöyle yaparız.
Path name = Paths.get("delete.me");
MappedByteBuffer mapped;
try(FileChannel fc1 = FileChannel.open(name, READ,WRITE,CREATE_NEW,DELETE_ON_CLOSE)) {
mapped = fc1.map(FileChannel.MapMode.READ_WRITE, 0, 4096);
}
position metoduŞöyle yaparız.
fc.position(14);
size metoduŞöyle yaparız.
FileChannel fc = ...;
System.out.println("size is " + (fc.size() >> 10) + " KB");
transferFrom metoduDestination Channel nesnesine, Source Channel nesnesinden kopyalama yapar. Şöyle yaparız.
FileChannel source = ...;
FileChannel destination = ...;
destination.transferFrom(source, 0, source.size());
transferTo metoduFileChannel.transferTo yazısına taşıdım
tryLock metodu
FileLock nesnesi oluşturur. Oluşturamazsa null döner. Şöyle yaparız.
FileChannel fc = ...
FileLock lock = fc.tryLock();
if(lock != null){
...
}
write metoduÖrnek
Şöyle yaparız.
ByteBuffer buf = ...;
fc.write (buf);
ÖrnekKilidi otomatik olarak alıp bırakmak için şöyle yaparız.
try(final FileOutputStream fos = new FileOutputStream(".queue", true);
final FileChannel chan = fos.getChannel()){
chan.lock();
chan.write(ByteBuffer.wrap(message.getBytes()));
}
Hiç yorum yok:
Yorum Gönder