[Çözüldü] JFileChooser ile yeni dosya kaydet.

Başlatan berat01, 15 Mayıs 2012 - 16:27:18

« önceki - sonraki »

0 Üyeler ve 2 Ziyaretçi konuyu incelemekte.

berat01



Merhaba,

Javada JFileChooser ile yeni bir dosya kaydetmek istiyorum. Bunun için toSave diye bir dosya oluşturdum programda.


JFileChooser fc=new JFileChooser();
...
//burada adres mesela home/xxx/Desktop/yeniDosya.xml olmalı.
File toSave=new File(fc.getCurrentDirectory().getCanonicalPath()+
                       "/"+fc.resimdeki_kirmizi_bölümü_string_olarak_oku());


GetCanonicalPath ile kaydetmek istediğim konumu okuttum programa ama üstteki resimde kırmızı ile işaretlediğim bölümü okutan fonksiyon hangisi?  Yani "resimdeki_kirmizi_bölümü_string_olarak_oku()" fonksiyonunun gerçeğini arıyorum.

Araştırdım ama kaynaklar zaten olan bir dosyanın üstüne yazmakla ilgili genellikle. Çok kolay görünüyor aslında ama yeni dosya kaydetmekle ilgili bulamadım.

travego0403

Java bilmiyorum ama  bir kaç bir şey söyleyeyim. Kullandığınız dialog penceresinin metotları aşağıdaki bağlantıda bulunuyor.  getSelected() metodu sanki sizin istediğinizi yapıyor gibi duruyor bir deneyin isterseniz.
http://docs.oracle.com/javase/tutorial/uiswing/components/filechooser.html#api

Ben aynı durumla C++/Qt kullanırken karşılaşmıştım biraz arayıp taradıktan sonra çözümü bulmuştum. Benim durumum şu şekildeydi. QFileDialog dosya konumunu döndürüyordu. "/home/sinan/Belgeler/dosya" gibi. Bana lazım olan yer sadece "dosya" yazan kısmı idi. Bunun için kullanmam gereken sınıf QFileInfo adlı bir sınıfmış ve bu işlemler için varmış. Belki Javada da buna benzer bir sınıf vardır. Ben hep farklı sınıflar içinde arıyordum bu üye fonksiyonu.  :)
"Matematik bir dildir ve bu dilde şairlere fizikçi denir." Richard Feynman

berat01

Cevap için teşekkürler.

Getselected fonksiyonu seçilen dosyayı döndürüyor.

Oracle ve javadoc sayfalarını araştırdım. Gözden kaçırıyorum sanırım ya da bir başka yolu var. Bulamadım henüz. :) Bulabilirsem paylaşırım. Bilen varsa direk paylaşırsa daha iyi olur benim için :).

travego0403

Peki File sınıfındaki getName() metodu işinizi görmüyor mu? Yukarıdaki dialog ile dosyayı alıyorsunuz(yol/path ile birlikte). Sonra bundan da ismini ayrıştırsanız.
"Matematik bir dildir ve bu dilde şairlere fizikçi denir." Richard Feynman

WhiteScars

getName, getAbsolutePath gibi methodlarla istediğin bilgileri alabilirsin. Eclipse kullanıyorsan toSave. yaptıktan sonra gelen methodların JavaDoc'larını oku kolayca bulabileceğini düşünüyorum.
İnsanoğluna bırakabileceğiniz en güzel miras tecrübelerinizdir.

berat01

Merhaba,

Cevaplar için teşekkürler.

Dediğim gibi getName() var olan bir dosyayı seçince çalışıyor.

Gerçi dün ve bu gün bakamadım programa başka işlerim vardı.

Aslında JFileChooser bunu tek bir fonksiyonla yapabilmeli. Yapamıyorsa büyük eksiklik.

Eclipse kullanıyorum toSave ile deneyeceğim. Dediğim gibi halledince buradan yazarım tekrardan.

WhiteScars

Tam olarak ne yapmak istediğini anlayamadım ama aşağıdaki kod parçasını incele istersen.


import javax.swing.JFileChooser;


public class Test {
public static void main(String[] args) {
JFileChooser fc = new JFileChooser();
if (fc.showOpenDialog(null) == JFileChooser.APPROVE_OPTION){
System.out.println(fc.getSelectedFile().getAbsolutePath());
System.out.println(fc.getSelectedFile().getName());
}
}
}



Çıktı olarak:

C:\Users\Whitescars\Documents\Procedure.docx
Procedure.docx
İnsanoğluna bırakabileceğiniz en güzel miras tecrübelerinizdir.

berat01

Cevaplar icin tesekkürler.

Ama burada Procedure.docx dosyasi zaten olan bir dosya degil mi?

Ben mesela JFileChooser ile "C:\Users\Whitescars\Documents\" adresine gelip. Sonra kirmizi ile isaretledigim yere "yenidosya.xml" yazdiktan sonra, "C:\Users\Whitescars\Documents\yenidosya.xml" dosyasinin olusmasini istiyorum.

rutku

@berat01 dosyanın orda olup olmadığını kontrol ettirirsin. Eğer yoksa yeni bir dosya oluşturup kaydedersin. Ne güzel dosya yolunu veren kodu @WhiteScars güzelce vermiş. Bunu anlamlandırabilmen için bol uygulama ve hangi kütüphanenin ne işe yaradığını öğrenmelisin. Aslında bir java kitabıyla programlamaya devam etmelisin.
Hayallerini kodla ...

uKiriş
Mezgeldek

WhiteScars

Alıntı yapılan: berat01 - 19 Mayıs 2012 - 13:43:30
Cevaplar icin tesekkürler.

Ama burada Procedure.docx dosyasi zaten olan bir dosya degil mi?

Ben mesela JFileChooser ile "C:\Users\Whitescars\Documents\" adresine gelip. Sonra kirmizi ile isaretledigim yere "yenidosya.xml" yazdiktan sonra, "C:\Users\Whitescars\Documents\yenidosya.xml" dosyasinin olusmasini istiyorum.

O zaman openDialog kullanmayacaksın, saveDialog kullanacaksın. Aşağıdaki kod derdini çözecek diye umuyorum :)


import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;

import javax.swing.JFileChooser;


public class Test {
public static void main(String[] args) {
JFileChooser fc = new JFileChooser();
if (fc.showSaveDialog(null) == JFileChooser.APPROVE_OPTION){
System.out.println(fc.getSelectedFile().getAbsolutePath());
System.out.println(fc.getSelectedFile().getName());

try {
BufferedWriter bw = new BufferedWriter(new FileWriter(fc.getSelectedFile()));
bw.write("1. satır");
bw.newLine();
bw.write("2. satır");
bw.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}

İnsanoğluna bırakabileceğiniz en güzel miras tecrübelerinizdir.

berat01

Arkadaşlar teşekkürler cevaplar için.

Ama bir anlık dikkatsizlik ile yazdığım kodları kaybettim. Yedeklemiştim aslında, ama yaklaşık 10 gün oluyor yedekleyeli. Güncel kodlar gitti. Programı önce eski haline getirip sonra JFileChooser ile uğraşacağım.  Son durumu tekrar bildiririm buradan.

Murphy Amca haklı çıktı yine: http://tr.wikipedia.org/wiki/Murphy_Kanunlar%C4%B1

berat01

Sorun javanın sürümündemiydi bilgisayarın başka bir ayarımıydı ya da böcek mi vardı bilemiyorum arkadaşlar ama eski yazdığım kodları yeniden yazdım ve şimdi her şey yolunda çalışıyor. Daha önce aynı şeyleri denememe rağmen çalışmamıştı. Aşşagıdaki kodla yeni bir dosya oluşturabiliyorum. Yardım eden herkese teşekkürler. Konu kapatılabilir.

int returnVal = fc.showSaveDialog(this);
if (returnVal == JFileChooser.APPROVE_OPTION) { 
transferedFile=new File(fc.getSelectedFile().getAbsolutePath());
yaziTransformation.append(fc.getSelectedFile().getAbsolutePath()+"\n"+"File Saved\n");
transferedFile.createNewFile();
}