Hızlı Konu Açma

Hızlı Konu Açmak için tıklayınız.

Son Mesajlar

Konulardaki Son Mesajlar

Reklam

Forumda Reklam Vermek İçin Bize Ulaşın

Java I/O File Sınıfı

YaSa22

Fahri Üye
Fahri Üye
Katılım
12 Temmuz 2014
Mesajlar
2,293
Tepkime puanı
2
Puanları
0
Konum
GTA
Java, işletim sistemindeki dosya (file) ve klasörler (directories) hakkında her türlü bilgiyi alabileceğimiz çok kullanışlı bir sınıf tanımlar.java.io paketi içerisinde bulunan File sınıfı sayesinde sistem üzerindeki dosya ve klasörler ile ilgili her türlü bilgiyi çekebiliyoruz. Ancak File sınıfı hakkında bilinmesi gereken en önemli nokta, File sınıfı herhangi bir dosyayı açmak ya da kapatmak gibi işlemler için tasarlanmamıştır. Dosya sistemi üzerinde bir dosya veya klasör ile ilişkilendirilerek, o nesne hakkında her türlü bilgiyi döndürür.File sınıfı ile dosya ve klasörler için gereken işlemleri yapabilmemiz için, öncelikle Path (konum-yol) hakkında birkaç şey söylemek gerekiyor.Path Nedir?

İşletim sistemleri, sistemde bulunan dosyaları hiyerarşik bir yapıda tutar. Dosyalar ve klasörler, ağaç yapısı (tree structures) adı verilen bir yapı ile sabit disklerde (harddisk) tutularak, disk üzerinde belirli bir adres ile ilişkilendirilir. İşletim sistemlerinin dosya yapısının en üstünde bir veya daha fazla üst nokta belirlenir (root nodes), diğer dosyalar ve klasörler bu nokta altında yapılandırılır. Kök dizini altında varolan diğer dosya ve klasörler yer alır.Klasörler içerisinde bilindiği gibi, pekçok altklasör (subdirectories) bulunabilir ve dosyalar ya da diğer klasörler de bu altklasörler içerisinde bulunabilir. Bu şekilde, istenilen derinlikte dosya ve klasör yapısı oluşturulabilir. Linux işletim sisteminde bahsedilen en üst nokta “ / ” ile belirlenirken, Windows sistemlerde “ C:\ ” gibi pekçok üst nokta tanımlanabiliyor.Linux’da home klasörü altında javablog adındaki bir dosya, ağaç yapısı sayesinde, kök dizini altındaki (/) home altklasöründe bulunur. İşte bu hiyerarşik yapı kullanılarak, disk üzerindeki herhangi bir klasör ya da dosyaya ulaşabiliyoruz. Linux işletim sistemi klasörleri ayırmak için /(slash) kullanırken, Windows \ (back slash – ters slash) kullanır. (/home/javablog ya da C:\home\javablog)İşletim sistemi üzerinde dosyalara ulaşmak için Absolute Path ve Relative Path adında 2 farklı yol izlenebilir.Absolute Path

Türkçe’de tam yol olarak çevrilen bu yapı, dosya ve klasörlerin disk üzerindeki tam yoluna karşılık gelir. Şöyle ki, absolute path ile dosya sistemi içerisindeki bir dosyanın yolu, kök dizinden başlayarak tüm derinlikteki diğer klasörler ve altklasörler belirtlir.Örnek vermek gerekirse, Linux işletim sistemimdeki javablog klasörü içersindeki “io.java” dosyasının absolute path ini yazalım. Burda “io.java” adındaki dosyanın absolute pathi “/home/fatih/javablog/io.java “. Görüldüğü gibi dosyanın disk üzerindeki tam yolunu gösteriyoruz. Dosyaya ulaşmak için, Linux işletim sisteminin sağladığı en üst dizinden (/) dosyamıza ilerledik.Relative Path

Relative Path dediğimiz yol tanımı ise, belirli bir dosyaya ulaşmak için verilen yol, o dosyanın çalışmaya başladğı klasör ile ilişkilidir. Burada dosyaya ulaşmak için hiyerarşinin en üstünden başlanmaz. Yukarıda verdiğimiz io.java dosyasının relative pathi, kısaca ” javablog/io.java” şeklinde tanımlanabilir. Relative path kullanılarak dikkat edilmesi gereken bir nokta, uygulamalara herhangi bir yerde relative path dışında bir bilgi verilmediği taktirde verilen dosya yapısı relative path bilgisi ile bulunamaz.Uniform Resource Identifier (URI)

Ağ’ın gelişmesi ile beraber, dosya yapılarının belirlenmesi için bir yol daha geliştirilmiştir. URI adı verilen bu yapı, Uniform Resource Locators (URL) lerin çok daha genelleştirilmiş halidir.Örneğin ”

Linkleri sadece kayıtlı üyeler görebilir. Linkleri görebilmek için Üye Girişi yapın veya ücretsiz olarak Kayıt Olun

“, websitenin URL si iken, URI kullanılarak Linux işletim sistemlerinde javablog.txt adındaki bir dosyaya ” file:/home/fatih/javablog.txt ” şeklinde, Windows sistemlerde aynı dosyaya ” file://C:/javablog.txt ” şeklinde ulaşabiliyoruz.
File Sınıfı

Şimdi bu bilgiler doğrultusunda ana konuya dönersek, java.io paketi içerisindeki File sınıfı, bir dosya veya klasör ile ilişkilendirilirken, yukarıda tanımlanan Absolute Path, Relative Path ya da URI kullanarak belirtilen dosya ya da klasöre erişebilir. Sınıfın tanımladığı 4 farklı constructor sayesinde, dosya ya da klasörleri istenilen formatda File sınıfına geçirebiliriz.Daha önce de belirttiğim gibi File sınıfı, dosyaları açmak ya da bunlar üzerinde çeşitli işlemler yapmak için tanımlanmış bir sınıf değildir. Basitçe, File sınıfını oluştururken bir dosya veya klasörün yolunu belirtirsiniz ve sınıfın sağladığı pekçok method sayesinde dosya ve klasörler hakkında her türlü bilgiyi döndürebilirsiniz.Şimdi File sınıfının sağladığı birkaç önemli method ile ilgili bir örnek geliştirelim.Kod:
//File Sınıf Örneği

import java.io.File;

class FileOrnek
{
public static void main(String[] args)
{
// tam yolu tanımlayalım
String path = "/home/fatih/javablog";
File file = new File(path);

//verilen yol doğru mu değil mi?
if(file.exists())
{
if(file.isFile())
{
System.out.println(file.getName() + " - bir dosyadır");
}
System.out.println(file.length() + " - boyutu");
System.out.println(file.lastModified() + " - en son düzenlenme tarihi");
System.out.println(file.getPath() + " - yolu (path)");
System.out.println(file.getAbsolutePath() + " - Absolute Pathi");
System.out.println(file.getParent() + " - parent");
if(file.isDirectory())
{
System.out.println(file.getName() + " - bir klasördür");
System.out.println("ve bu klasör içerisindeki dosyalar :");
String[] klasor = file.list();
for(String dosya : klasor)
{
System.out.print(dosya + " ");
}
System.out.println("");
}
System.out.println(file.toURI() + " URI adresi");
if(file.isHidden())
{
System.out.println("Gizli (hidden) olarak işaretlenmiş");
}
else
{
System.out.println("Gizli (hidden) olarak işaretlenmemiş");
}
}
else
{
System.out.println("Böyle bir yol mevcut değildir.");
}
} //end of main
} //end of class



Örnekte gördülüğü gibi verilen nesnenin dosyamı klasör olduğundan tutun, en son değiştirilme tarihine kadar her türlü bilgiyi alabiliyoruz. Üstelik verilen yol bir klasöre karşılık geliyorsa, bu klasörün içerisindeki elemanları da bir dizi olarak alabiliyoruz. Ben örnekte javablog adında bir klasör yolunu File sınıfına geçirdim. path değişkenini bir dosya için tekrar yapılandırırsak program çıktısı farklı olacaktır.Not :Örnek kodu, methodların daha iyi bir şekilde gözükmesi için açık açık yazdım, bu kod çok daha akıllıca ve dosya klasör ayrımını en başta halledip, çok daha düzenli bir şekilde yazabilirdik.
 

Users Who Are Viewing This Konu (Users: 0, Guests: 1)

Üst