19 Aralık 2014 Cuma

Git Depo Oluşturma(Create Repository) Ve Uzak Sunucuya Yollama(Push)

Merhaba, bu yazımda size yerel(local) git  depo(repository) oluşturma ve uzak(Remote) sunucuyu eklemekten bahsedeceğim.  Aslında birazdan paylaşacağım komutları IDEler(netbeans,eclipse,intelliJ,..vs)  otomatik olarak yapmaktadır ancak zaman zaman git bash ile kendinizin yapması gereken durumlarda olacaktır. Bu durumlarda elinizde küçük bir kaynak olması adına  aşağıdaki komutlardan yararlanabilirsiniz.

NOT : Yazının devamı  komut/açıklama şeklinde devam etmektedir..

Git global setup:
git config --global user.name "Administrator"  //kullanıcı adı bilgisini config dosyasına global olarak yazar
git config --global user.email "admin@local.host" // email bilgisini config dosyasına global olarak yazar

Repository oluşturma (Create Repository)
mkdir project-portal  //project-portal adında bir dizin(directory) oluşturur
cd project-portal //project-portal dizininin içine girer
git init // Git'i ayar dosyalarıyla birlikte oluşturur
touch README // Readme dosyası oluşturur
git add README //Readme dosyasını git depoya(repository) ekler
git commit -m 'first commit' // dosyası commit ederken hatırlayabileceğiniz bir  yorum yazmanızı sağlar. burada yorum olarak "first commit" yazdık.
git remote add origin http://192.168.1.200/levent.yildiz/project-portal.git //Uzak sunucuyu(git server) tanıtır. projemizin 192.168.1.200/levent.yildiz/project-portal.git linkinde olduğunu belirttik.
git push -u origin master //commit edilen değişiklikleri uzak sunucuya yollar



Git repository varsa(Existing Git Repo) 
cd project-portal // var olan(project-portal) dizinine girer 
git remote add origin http://192.168.1.200/levent.yildiz/project-portal.git //Uzak sunucuyu(git server) tanıtır. projemizin 192.168.1.200/levent.yildiz/project-portal.git linkinde olduğunu belirttik.
git push -u origin master  //commit edilen değişiklikleri uzak sunucuya yollar


Yukarıdaki komutları sırasıyla uyguladığınızda "project-portal" diye bir proje dizini oluşturur. Bu dizin içerisinde git repository oluşturur. Daha sonra uzak git sunucusunu projeye ekler. Son olarak ta localde ki değişiklikleri uzak sunucuya yollar.

15 Aralık 2014 Pazartesi

Repositoryde Olmayan Jar ları Local Repository Oluşturarak Projeye Dahil Etmek. // Maven

Herkese merhaba, bu yazıma başlıktan da anlaşılacağı üzere diye başlayamıyorum. Çünkü bu yazının  başlığını atarken esasen biraz güçlük çektim.  Muhtemelen başlığa bakarak sizde ne demek istendiğini anlayamayacaksınız. Ancak  arkadaşlar konumuzun yine  Maven olduğunu belirterek okumaya devam etmenizi tavsiye ediyorum..

Daha önce size Maven'ın ne amaçla kullanıldığından bahsetmiştim. Uzak sunuculardaki kütüphaneleri sizin projenize dahil eden bir asistan olduğunu hatırlayın.  Şimdi hemen bir senaryo canlandıralım kafamızda. Bir Jar dosyası bulup indirdiniz internetten. Yada kendiniz kodlamasını yaparak  bir Jar oluşturdunuz. Ve bu Jar dosyası  remote repository lerden hiçbirinde yok. Zaten kendi yazdığınızın olmaması normal.  Peki bu Jar dosyasını Maven projenize dahil edemeyecek misiniz? Cevap : Tabii ki edebileceksiniz...

Bunun yöntemi şudur. Localde(Kendi bilgisayarınızda) bir Maven repository(Depo) oluşturarak bu Jar dosyasını içine atıyorsunuz ve Pom dosyanıza, Repository'e bakarken   kendi oluşturduğunuz local repositorye de  bakmasını söylüyorsunuz.  Maven bu komutu alır almaz göreve başlıyor. Bundan sonra sizin local repository nizi de  tarayarak bağımlılıkları(dependency) projenizin çıktısına ekliyor.


Şimdi yukarıda yazdıklarımı komutlarla anlatayım:

Önce maven ayarlarını kontrol etmenizi tavsiye ediyorum.
mvn –version


aşağıdaki gibi bir çıktı alıyorsanız (versiyon ve path bilgisi geliyorsa) sorun yok demektir.





Komut satırından aşağıdaki kodu çalıştırarak repository oluşturun. Ayrıca jar dosyanızı local repository de konumlandırın.
mvn deploy:deploy-file  -DgroupId=com.company.uniApi -DartifactId=eml-creator -Dversion=1.0 -Dpackaging=jar -Dfile=C:\_projects-company\eml-creator\eml-creator\target\eml-creator.jar  -DrepositoryId=companyRepo -Durl=file:///C:\_projects-local-repo




Yine komutları  çalıştırdığınızda alttaki gibi bir çıktı alıyorsanız (BUILD SUCCESS) işleminiz başarılı demektir.


Şimdi yazdığımız komutun içeriğini açıklayayım :

deploy:deploy-file  // Bir dosyanın deploy edileceği
-DgroupId=com.company.uniApi // Ekleyeceğimiz Jar dosyasının groupId değeri.
-DartifactId=eml-creator // Eklenecek Jar Dosyasının artifactid değeri
-Dversion=1.0 //Eklenen Jar Dosyasının versiyonu
-Dpackaging=jar // Eklenecek Dosyanın Jar dosyası olduğu
-Dfile=C:\_projects-company\eml-creator\eml-creator\target\eml-creator.jar //eklenecek  Jar dosyasının dosya yolu(Path)
-DrepositoryId=companyRepo // EKlenecek[Oluşturulacak ] repostry ID si
-Durl=file:///C:\_projects-local-repo // Oluşturulacak Repository dizininin yolu(Destination Path)



Pom Güncellemeleri :

Bu işlemlerden sonra Jar dosyanızı eklemek istediğiniz maven projesinin pom dosyasına dahil etmelisiniz. bunun için pom.xml dosyasında önce oluşturduğunuz repository yi tanıtın.
pom.xml
   <repositories>
        <repository>
            <id>companyRepo</id>
            <url>file://C:\_projects-local-repo</url>
        </repository>
    </repositories>





Daha sonra dependency kısmına Jar dosyanızın bağlılığını ayarlayın

pom.xml
    <dependencies>
        <dependency>
            <groupId>com.company.uniApi</groupId>
            <artifactId>eml-creator</artifactId>
            <version>1.0</version>
        </dependency>
    </dependencies>


Bütün bu yaptıklarımızdan sonra son bir işlem kaldı maven install diyerek  finali yapmak..

Arkadaşlar  remote repository de olmayan dosyaları maven'a dahil etmenin birden fazla yöntemi var aslında. Ben kendi araştırmalarım dahilinde bu yöntemi kullanmayı tercih ettim. Sizlerede Türkçe kaynak oluşturmak adına paylaşayım istedim.

12 Aralık 2014 Cuma

Netbeans İle Java Application Projesi Oluşturma Ve Palette Hazırlama

Merhaba arkadaşlar,
bu yazımda size netbeans ile palette oluşturmayı göstereceğim.  Bu sayede sürükle bırak yöntemiyle GUI hazırlayabileceksiniz.
Şuan bulunduğumuz noktada Java ile GUI oluşturmak pek tercih edilmese de ara sıra bazı projelerde ihtiyaç olabiliyor.

Normal şartlarda ben geliştirmelerimi intelliJ idea aracılığıyla yapıyorum. Ancak bazı durumlarda diğer IDE ler elimi biraz daha hızlandırıyor.
Bu sebepten ötürü de zaman zaman Eclipse ve Netbeans kullandığım da oluyor.

öncelikle Netbeans ile gui diye bir proje oluşturarak işe başlayalım.

Yeni Proje oluştur.  Choose File > New Project.


Açılan pencereden projenin Java Application projesi olduğunu belirtiyoruz.


Son olarak projenin kurulacağı dizini ve proje adını belirliyoruz.

Oluşturduğumuz projenin üzerine sağ tıklayarak yeni/Diğer seçeneğini seçiyoruz.


Açılan dialog box tan  JFrame Form f seçiyoruz.


•   Class Adı olarak  "NumberAdditionUI"  ve paket adı olarak ta   "my.numberaddition"  giriyoruz.


Projede Palette özelliği eklendi. Artık palet üzerinden gerekli swing ve awt nesneleriyle  sürükle bırak yöntemiyle GUI tasarımı yapabilirsiniz.



Yaptığınız tasarımların kaynak kodlarını alarak projenizde kullanabilirsiniz. 

Kaynak :

kolay gelsin..



11 Aralık 2014 Perşembe

Linux Üzerine Pdo ve Sqlite Kurulumu - PHP

Herkese merhaba,
yaklaşık 2-3 hafta önce linux üzerinde sqlite kullanarak çalışma yapmam gerekti. PHP sqlite eklentisini kurarken yine sizleri düşünerek 3-5 satır bir şeyler yazıp çizdim.  Ve bu yazıp çizdiğim notlarımı aşağıda paylaşacağım.
Öncelikli olarak nedir bu sqlite diyecekler için kısa bir açıklama yapayım istiyorum. Arkadaşlar sqlite bir veri tabanıdır. Açık kaynak kodludur. Diğer veri tabanlarından farklı olarak tek bir dosya üzerinde verilerini kriptolu(encrypted) olarak tutar. Bu sayede projelerinizi taşırken oluşturduğunuz db dosyasıyla birlikte taşıyıp farklı sunucularda kolayca çalıştırabilirsiniz. Küçük projelerde hızlı olmasıyla ön plandadır. Daha çök mobil cihazlarda kullanılır.

Yapacağınız işlemler sadece 4 adımdan ibaret.

1-) sqlite kurulum
sudo apt-get install php5-sqlite


2-) Pdo kurulumu
sudo apt-get install php5-pdo


3-) Servis Restart
sudo service apache2 restart


4-) yüklü pdo driverlarını ekrana yazdırma
foreach(PDO::getAvailableDrivers() AS $drivers){
                echo $drivers.PHP_EOL;
}


Kolay gelsin

Sistem Değişkeni Oluşturma Ve Komut Satırı Üzerinden JAVA_HOME Değerini Ayarlama

Merhaba herkese,
Bu yazımda Windows üzerinde sistem değişkeni oluşturmayı, değiştirmeyi ve değerlerini görüntülemeyi anlatacağım. Windows ortamında oluşturacağımız değişkenlerin esas yeri kayıt defteridir(Registry).  Ancak bir sistem uzmanı olmadığım için burada çok detaya girmeden işimizi görecek kadarını anlatacağım.  Windows ortamında geliştirme yapan tüm J2ee Developerlar kurulum yaparken ortam değişkeni set etme işiyle mutlaka  uğraşırlar.   Her makine değiştirme işleminden yada her yeni kurulumlar dan sonra bu ayarları yapmak bazen sıkıcı olabiliyor.  Dolayısıyla değişken tanımlama konusu olarak ta JAVA_HOME değerini değiştirmeyi işlememiz de fayda olacağını düşündüm.

JAVA_HOME diye bir sistem değişkeni oluşturacağız ve bu değişkene javanın kök(javayı kurduğumuz) dizinini set edeceğiz.
Öncelikle komut satırı üzerinden  Java home değerini set etmek için alttaki komutu çalıştırmanız yeterli olacaktır. Bu sayede işletim sistem JAVA_HOME’u yoksa oluşturacaktır. Değişken zaten varsa da değerini set edecektir.

Değişken oluşturma:
setx  -m  JAVA_HOME  "C:\Program Files\Java\jdk1.7.0_51"

Windows işletim sistemi üzerinde oturum bazlı değişken, kullanıcı bazlı değişken ve sistem bazlı değişken oluşturabilirsiniz. Yukarıda  setx –m diyerek sistem değişkeni oluşturmuş oldum. 

Değişkenin değerini ekrana yazdırma: 
set JAVA_HOME


Üstte komut satırından yazdığımız kodları  bir text editörü(notepad,notepad++,..vs) aracılığıyla bat uzantılı olarak kaydedip çalıştırırsanız  tekrar kullanmak istediğinizde size büyük kolaylık sağlayacaktır. 

Üstte tek satırda yazdığımız komut yerine manuel olarak JAVA_HOME'u set etmek isteseydik aşağıdaki adımları izlemek durumunda kalacaktık.
Control Panel -> System and Security -> System -> System Properties -> Environment Variables sekmelerini tıklıyoruz.  Açılan penceredeki System Variables penceresinde JAVA_HOME satırı yoksa New düğmesine basıyoruz. Açılan pencerede değişken adı(Variable Name) = JAVA_HOME ve değeri(Variable Value) = "C:\Program Files\Java\jdk1.7.0_51"yazıp OK diyoruz.

Ben artık ilk anlattığım yöntemle ilerliyorum. Bana göre sizde öyle yapın. :)
Kolay gelsin.

12 Ekim 2014 Pazar

Spring + Quartz ile zamanlanmış görevler

Merhaba,
bu yazımda sizlere spring ve quartz entegrasyonundan bahsedeceğim. Bir projede belli aralıklarla işlem yapmak isterseniz(SMS gönderme , Mail gönderme, vs ..), bu yapıdan faydalanabilirsiniz. Ben bu projede 10 sn aralıklarla mail gönderme işlemini anlatacağım, kodları inceleyerek zamanlanmış görevler hakkında bilgi sahibi olabilirsiniz.

Öncelikli olarak intelliJ aracılığıyla bir Spring web projesi oluşturuyoruz.
Proje bittiğinde aşağıdaki yapıda olacaktır:


pom.xml dosyasına quartz dependency tanımlamalarını yaparak hemen başlayalım.

pom.xml
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-tx</artifactId>
            <version>3.1.2.RELEASE</version>
        </dependency>

        <!-- Quartz API -->
        <dependency>
            <groupId>opensymphony</groupId>
            <artifactId>quartz</artifactId>
            <version>1.6.3</version>
        </dependency>

        <dependency>
            <groupId>commons-collections</groupId>
            <artifactId>commons-collections</artifactId>
            <version>3.2.1</version>
        </dependency>

        <dependency>
            <groupId>org.apache.directory.studio</groupId>
            <artifactId>org.apache.commons.logging</artifactId>
            <version>1.1.1</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-support</artifactId>
            <version>2.0.6</version>
        </dependency>

Web projesi oluşturduğum için projeye gelen tüm URL leri  index.jsp  sayfasına yönlendirelim. Yönlendirme yapmasak ta quartz çalışacaktır ancak yönlendirme yaparsak projeyi çalıştırdığımız bir karşılama sayfası olur ve sayfa bulunamadı hatası almayız.
HelloController .java
@Controller
@RequestMapping("/")
public class HelloController {
                @RequestMapping(method = RequestMethod.GET)
                public String printWelcome(ModelMap model) {
                               model.addAttribute("message", "Hello world!");
                               return "hello";
                }
}

scheduler için xml dosyası aracılığıyla MailReportServiceImpl .java dosyasındaki mailSend metotunu çağıracağız. Dolayısıyla bu class ve metodu hemen oluşturalım.

 MailReportServiceImpl .java
package com.company.service.impl;

import com.company.service.MailReportService;

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;

/**
 * Created by levent.yildiz on 12.10.2014.
 */
public class MailReportServiceImpl implements MailReportService {
    @Override
    public void mailSend() {

        DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Calendar calendar = Calendar.getInstance();
        String strDate = dateFormat.format(calendar.getTime());

        //TODO : development
        //Mail gönderme işlemi burada yapılacak
        System.out.println("Mail Gonderiliyor.." + strDate);
    }
}



Ve son aşamada quartz ayarlarını bir xml dosyasından yapıyoruz.
MailReportServiceImpl , MethodInvokingJobDetailFactoryBean(Quartz) ve SimpleTriggerBean(Quartz) metotlarını çağıran bean ler oluşturuyoruz.

MethodInvokingJobDetailFactoryBean metodunu çağırırken kendi yazdığımız MailReportServiceImpl  classını ve mailSend metodunu refere ediyoruz.

Birde son olarak SimpleTriggerBean metoduna bu job'un ne sıklıkla çalışması gerektiğini set ediyoruz.

<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:p="http://www.springframework.org/schema/p" xmlns="http://www.springframework.org/schema/beans"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
                http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">


    <!-- Beans -->
    <bean id="mail"
          class="com.company.service.impl.MailReportServiceImpl"/>


    <bean id="methodJobDetailBean"
          class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"
          p:concurrent="false" p:targetObject-ref="mail" p:targetMethod="mailSend"/>


    <!-- For Testing -->
    <bean id="simpleTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean"
          p:jobDetail-ref="methodJobDetailBean" p:startDelay="20000"
          p:repeatInterval="10000"/>


    <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean"
          p:waitForJobsToCompleteOnShutdown="true">
        <property name="triggers">
            <list>
                <ref bean="simpleTrigger"/>
            </list>
        </property>
    </bean>
  
</beans>


projenin çıktısı aşağıdaki gibi olacaktır:


kaynak dosyalar(github) : indirmek için tıklayın

jslt koşullu seçenekler(choose when otherwise)

Merhaba arkadaşlar,
Aslında daha önceden size jslt tarafında koşullu ifadelerin nasıl tanımlanacağını paylaşmıştım. Ancak Internet üzerinde bir araştırma yaparken stackoverflow da gözüme çarpan bir açıklama oldu. Önceki yazıyı kirletmeden yeni bir başlık altında sizlere de paylaşayım istedim. Kullanım sade ve anlaşılır olduğu için orijinal haline dokunmadan paylaşıyorum:


<c:choose>
  <c:when test="${condition1}">
    ...
  </c:when>
  <c:when test="${condition2}">
    ...
  </c:when>
  <c:otherwise>
    ...
  </c:otherwise>
</c:choose>


<c:if test="${temperature eq 'HOT' || temperature eq 'VERYHOT'}">



postgresql tip dönüştürme (casting) kullanım örneği

Merhaba, bir ders notumu(Aslında iş notu) daha sizinle paylaşmak istiyorum.
yazılım dillerinde olduğu gibi veri tabanı tarafında da tip dönüşümü(casting) işlemleri vardır. Geçenlerde böyle bir ihtiyaç oluşmuştu vt tarafında. Daha sonra tekrar lazım olur diye not etmiştim. sizinle de paylaşayım istedim.

"yıldız" string ifadesini  chracter varying türünde soyadi sütununa cast edelim
cast('yıldız' AS character varying) AS soyadi

null değerini smallint tipinde turu sütununa cast edlim
cast(null AS smallint) AS turu


örnek postgres kullanımı aşağıdadır:
select
cast('yıldız' AS character varying) AS soyadi,
cast(null AS smallint) AS turu
from table

En bilinen/kullanılan linux/unix komutları

Merhaba arkadaşlar,
Unix sistemleri öğrenmeye başladığımda en çok kullanılan komutları not etmiştim. Bu notumu sizede faydası olur diye paylaşmak istiyorum. Ayrıca bende hala Unix tarafında yeni komutlar öğreniyorum. Dolayısıyla benim Unix hazineme yeni komutlar eklendikçe bu sayfayı da güncelleyeceğim.

Şu anlık elimde olanlar aşağıdadır : 


KOMUT
AÇIKLAMA / KULLANIM
İŞLEV
Pwd
Print working directory
Bulnduğumuz directory’nin path  bilgisini verir.
Cd
Change directory
Ls
List Directory Contains
Bulunduğumuz dizindeki tüm dosyala ve dizinleri listeler.
Mkdir
Make Directory
Bulunduğumuz dizinde yeni bir klasör oluşturur.
Touch
Bulunduğumuz dizinde yeni bir dosya oluşturmak için kullanılır.
Rm
Remove
Dosya silmek için kullanılır
Mv
Move
Dosyayı taşımak için kullanılır.
Cp
Copy
Dosyayı kopyalar
Man
Short For Manual Page
Komutların kullanımını gösteren manual sayfasına gider
Grep
 cat /var/log/catalina.log | grep "error"
Regex aracılığıyla girilen değere benzer listelemeler yapar.
Sudo
Substitute User  Do
Rm -r
Rm –r directoryName
Klasörü içindeki dosyalarla birlikte siler.
Dpkg
dpkg --get-selections| grep -v deinstall > output.log
Yüklenen paketleri listeler
 Curl
  curl -I http://twitter.com/
supported protocols (DICT, FILE, FTP, FTPS, GOPHER, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS, TELNET and TFTP)
 locate
 Locate tomcat
 Dosyayı ismine göre arar. Regex ile arama yapar.
Passwd
passwd adm_levent
Enter new UNIX password:
Retype new UNIX password:
Unix sistemler üzerinde ki kullanıcı hesabınızın şifresini değiştirmenize olanak sağlar.
find
find -name Abc.java
Abc.java adında dosya arar
sha256sum
echo -n 'bunuşifrele' |sha256sum
Stringi sha256 ile şifreler

11 Ekim 2014 Cumartesi

Java İle Dosya İşlemleri (Okuma / Yazma / Ekleme)

Merhaba arkadaşlar,
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");


    }


NOT1: okunacak dosya C:\read-file.txt  dosyasıdır. C dizininde bu dosya bulunmazsa file not found exception hatası alırsınız.

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

Son olarak projeyi run edince aşağıdaki çıktıları üretecektir.



kaynak dosyalar(github) : indirmek için tıklayın