Bayram, şehir dışı seyahatler , iş yoğunluğu derken uzun zamandır yazamıyordum. Bu gün sizlere Java ile Dosya işlemleri nasıl yapıldığını paylaşacağım. Bir aksilik olmazsa eğer[uyku/yorgunluk.. vs :) ] 1-2 yazı daha yazıp proje/kaynak dosyalarıyla birlikte paylaşıyor olacağım.
Aslında her işlem de olduğu gibi dosya operasyonlarını da Javada birden fazla yöntemlerle yapabilirsiniz ancak ben burada en bilinen yöntem olan BufferedWriter ve BufferedReader ile dosya işlemleri yapacağım.
Öncelikle intelliJ aracılığıyla bir consol projesi oluşturalım(Web projesi oluşturarak ta aynı işlemleri yapabilirsiniz).
Projenin yapısı(Son hali) aşağıdaki gibi olacaktır.
Dosya işlemleri için Service paketinin altında Operations.java adında bir sınıf oluşturuyoruz.
Bu sınıfın içinde aşağıdaki isimlerde 3 tane metot olacak.
public static void writeFile(String content) // dosya yazar
public static void appendFile(String content) // dosyaya içerik ekler(Eski verileri silmeden)
public static void readFile(String path) // dosyadan okur
|
Operations.java / writeFile
public static void
writeFile(String content) {
File file = new
File("write-file.txt");
//if file doesn't
exists , then create it
if (!file.exists())
try {
file.createNewFile();
} catch (Exception
e) {
e.printStackTrace();
}
try {
FileWriter fw = new
FileWriter(file.getAbsoluteFile());
BufferedWriter bw =
new BufferedWriter(fw);
bw.write(content);
bw.close();
System.out.println("SUCCESS..");
} catch (Exception e) {
e.printStackTrace();
}
}
|
Yukarıdaki metot dosyaya yazmak istediğiniz her içeriği işlerken, mevcut dosya içeriğini temizler/ezer(override). Eğer dosyadaki var olan içeriğe dokunmadan en alta satır eklemek istiyorsanız yapmanız gereken tek işlem var oda FileWriter'a true değerine sahip ikinci bir parametre göndermek. Bu sayede FileWriter sınıfındaki override işlemi disable olur. Girdiğiniz içerikler ardı ardına eklenir.
Operations.java / appendFile
FileWriter fw = new
FileWriter(file.getAbsoluteFile(), true);
|
Operations.java / readFile
public static void
readFile(String path) {
BufferedReader br =
null;
String sCurrentLine;
String filePath = path;
try {
br = new
BufferedReader(new FileReader(filePath));
while
((sCurrentLine = br.readLine()) != null) {
System.out.println("READ
::::: " + sCurrentLine);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
br.close();
} catch (Exception
e) {
e.printStackTrace();
}
}
}
|
Run.java sınıfındaki main metodu çalıştırarak console ekranından işlemlerin sonucunu görebilirsiniz.
controller/Run.java
public static void main(String[] args) {
System.out.println("RUNING..");
//call writer class
Operations op = new Operations();
Long currDate = System.currentTimeMillis();
Date date = new Date(currDate);
String timeStr = date.toString();
//content to file + system time
String content1 = "ilk satiri dosyaya yaz " + timeStr + "\n";
String content2 = "ikinci satiri dosyaya yaz " + timeStr + "\n";
String content3 = "Ucuncu satiri dosyaya yaz " + timeStr + "\n";
//write to file
op.writeFile(content1);
op.writeFile(content2);
op.writeFile(content3);
//append to file
op.appendFile(content1);
op.appendFile(content2);
op.appendFile(content3);
//read file
op.readFile("C:\\read-file.txt");
}
|
NOT2: Özel karakterlerin string'e dönüştürebilmesi için dosya path inde ki slash ları iki kere yazın C:\read-file.txt yi C:\\read-file.txt şeklinde
Hiç yorum yok:
Yorum Gönder