En iyi yanıtlayıcılar
Dosya taşımada promlem yaşıyorum.

Soru
-
Merhaba;
Ölçüm yaptığımız bir bilgisayar var.
Her bir ölçümden sonra aynı isimli dosya oluşturuyor.(123456.dfq gibi)Biz ayrı bir program ile bu klasördeki dosyayı server a çekiyoruz. Fakat server a çekmeden yenibir ölçüm yapıldığında eski ölçümü siliyor ve yeni ölçümü dosyanın içine yazıyor. Bu da bizim için veri kaybı demek.
Ölçüm yapan bilgisayarın yazılımına müdahale etme şansızmız yok. :(
Bu sebeple şöyle çözüm düşündük.
Oluşan dosyanın klasörünü izleyip dosya oluşur oluşmaz başka bir klasöre tarih zaman vb.. ile yeniden adlandırıp taşımak istedik.
Alttaki gibi bir kod yazdık.Programı çalıştırdığımda ilk dosya oluşunca sorunsuz çalışıyor.
ikinci bir dosya oluştuğunda resimdeki hatayı veriyor.
Problem nedir.
Yardımlarınız için şimdiden teşekkürler.
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.IO; using System.Windows.Forms; namespace filesystemwatcher_ile_yeniden_adlandir { public partial class Form1 : Form { public Form1() { InitializeComponent(); } public string kaynak_klasor, hedef_klasor, path, YeniDosyaAdi,zaman; public int dosya_say; private void fileSystemWatcher1_Created(object sender, System.IO.FileSystemEventArgs e) { kaynak_klasor = "C:\\Users\\alk4bu\\Desktop\\kaynak"; hedef_klasor = "C:\\Users\\alk4bu\\Desktop\\hedef"; string[] dosyalar = System.IO.Directory.GetFiles(kaynak_klasor); string dosya_adi; foreach (string eleman in dosyalar) { dosya_adi = System.IO.Path.GetFileName(eleman); path = kaynak_klasor + "\\" + dosya_adi; dateTimePicker1.Format = DateTimePickerFormat.Custom; dateTimePicker1.CustomFormat = "d:M:yyyy h:mm:ssss"; zaman = dateTimePicker1.Text.ToString(); zaman = zaman.Replace(".", ""); zaman = zaman.Replace(":", ""); zaman = zaman.Replace(" ", ""); YeniDosyaAdi = hedef_klasor + "\\" + zaman +".dfq"; File.Move(path, YeniDosyaAdi); } } } }
Yanıtlar
-
zaman = dateTimePicker1.Text.ToString();
ekrandaki kutuyu sürekli değiştirmediğiniz için problem oluyor. Zamanı direkt DateTime.Now ile alınız.
- Düzenleyen Cihan YakarMVP 19 Eylül 2019 Perşembe 10:05
- Yanıt Olarak İşaretleyen icemeno 19 Eylül 2019 Perşembe 10:34
-
Abi Söylediğin değişiklikleri yaptım ve x86 için derledim. Oldu şuan bilgisayarda sorunsuz çalışıyor.
Bunun haricinde bekli faydalanmak isteyenler olursa diye yanlış yaptığım bir kaç şeyi daha düzelttim, onları da yazayım belki birine faydası olur.
İlk olarak filesystemwacher ın pathini değiştirmeyi unutmuşum onu değiştirdim.
Sonrasında x86 olacak şekilde derledim.
Programı denemek için atölyeye gtitiğim de şu hatayı aldım.
Aklıma ilk olarak gelen şey Framework uyumsuzluğu oldu, sonrasında hemen toparladım ve ölçüm sonuçları yazılmadan yani işlem bitmeden dosyayı taşımaya çalışıyor olabileceğim aklıma geldi.
using System.Threading;
ekledikten sonra
private void fileSystemWatcher1_Created(object sender, System.IO.FileSystemEventArgs e) {
Thread.Sleep(2000);
ekledim.
Sorunsuz çalışıyor. Desteğiniz için tekrardan teşekkürler.
Not: USB ile ilgili prosedur sadece Türkiye için değil Tüm Dünya da ki Lokasyonlarımız da uygulanan genel bir prosedür abi. Almanlar dahil. :)
Tüm Yanıtlar
-
Kodu deneyemiyorum fakat şu şekilde dener misiniz?
path = kaynak_klasor + "\\" + dosya_adi+".dfq";
kaynak klasördeki dosya adının uzantısını ekleyin.
Merak et, Araştır, Geliştir. Harun Yılmaz
- Düzenleyen Harun Yılmaz 19 Eylül 2019 Perşembe 08:57
-
-
zaman = dateTimePicker1.Text.ToString();
ekrandaki kutuyu sürekli değiştirmediğiniz için problem oluyor. Zamanı direkt DateTime.Now ile alınız.
- Düzenleyen Cihan YakarMVP 19 Eylül 2019 Perşembe 10:05
- Yanıt Olarak İşaretleyen icemeno 19 Eylül 2019 Perşembe 10:34
-
Teşekkür ederim.Oldu..
- Yanıt Olarak İşaretleyen icemeno 19 Eylül 2019 Perşembe 10:36
- Yanıt İşaretini Geri Alan CetinBasozEditor 19 Eylül 2019 Perşembe 11:15
-
DateTime.Now cozum. Benim eklemek istediğim, buradaki degeri metine cevrim sekliniz. O sekilde yaparsanız, en azından, siralanamaz bir sonuc elde edersiniz. Düzgunce bir sekilde yyyyMMddHHmmssfff formatıyla saklarsanız hem siralanabilir, hem de hangi zamanda saklandigini okumak ya da çevirmek daha kolay olur:
string yeniDosyaAdi = Path.Combine(hedef_klasor, $"{DateTime.Now.ToString("yyyyMMddHHmmssfff")}.dfq");
How to create a Minimal, Reproducible Example
The way to Go.
World's most advanced open source (object-) relational Database.
Flutter (for mobile, for web & desktop. -
Merhaba Çetin Abi,
Dosyalar özel dosyalar zaten abi. İçerisinde istediğimiz tüm bilgiler var.
Ne zaman, hangi operatör tarafından, hangi üretim makinesinde üretildi, ölçüm sonuçları vb.. tüm bilgiler var.
Bu dosyaları direkt olarak bu şekilde okumuyoruz zaten abi. Özel bir İstatistik yazılımı var onun veri tabanına kayıt ediliyor ve oradan dosya içeriğini okuyoruz.
Bu dosyalar Almanya ya aktarılıp bir veri tabanına yazdırılıyor ve sonrasında muhtemelen siliniyor. Bu sebeple çok dikkat etmedim ve açıkçası senin gibi düşünemedim.
Fakat yine de söylediğini yapacağım ve doğrusu (mantıklısı) neyse o şekilde öğrenmeye gayret göstereceğim.
Tekrardan teşekkürler.
Fakat şimdi de şöyle bir problemim var.
Bu kodun çalıştığı makine de iki adet işletim sistemi çalışıyor. Gerçek işletim sistemi Win7 bu işletim sistemi üzerine Sanal makine kurulu ve bunda da Win Xp çalışıyor.
Ölçümleri yaptığımız cihazın programında ( donanımında da olabilir bilmiyorum ) Win7 desteği yok.
Yukarıda yazdığımız kodu Win Xp de C:\ altında çalıştırıyoruz. Ama program kendi bilgisayarım da çalışmasına rağmen , burada çalışmıyor. (Kendi bilgisayarım ve Ölçüm yapılan bilgisayardaki dosya yollarını değiştirip derliyorum )
1) Öncelikle systemfilewatcher Win7 de mi işlem yapmaya çalışıyor acaba.
2) Hedef ve kaynak dosyayı tanımlarken farklı bir yol mu izlemem gerek acaba,
Örneğin Win7 den WinXp ye erişirken şöyle bir path izliyoruz. 10.20.10.115 \c:\windows........ gibi
Birde şimdi aklıma geldi. Resimdeki kısmı Systemfilewatcher ın özellikler kısmında path kısmını değiştirmeden derlemiş olabilirim? (Bilmiyorum yarın işe gidince bakacağım. )
Yada yapmam gereken başka bir şeyler var mı?
Şimdiden teşekkürler...
Resim temsilidir. İnternetten buldum..
- Düzenleyen icemeno 19 Eylül 2019 Perşembe 14:23 Eksik bilgi vermişim.
-
XP'de .Net destegi yoktu diye hatırlıyorum, var miydi?
Not: Programinin tamami o yukarıda görünen ise , sonra boş vaktimde sana win32 exe yazarım (baska dilde).
How to create a Minimal, Reproducible Example
The way to Go.
World's most advanced open source (object-) relational Database.
Flutter (for mobile, for web & desktop.
- Düzenleyen CetinBasozEditor 19 Eylül 2019 Perşembe 14:27
-
Merhaba abi;
Öncelikle ilgin ve desteğin için teşekkürler. Hakkını helal et.
WinXp nin Net. Desteği var mı bende bilmiyorum. Ama şöyle bir şey geldi başıma bugün.
Ölçüm yapılan bilgisayarda programı çalıştırmak için Exe ye çift tıkladığımda NetFrameWork versiyonunun uyumsuz olduğu ve bilgisayara uygun Net FrameWork versiyonunu indermem gerektiği uyarısını verdi. Sonra bilgisayarda yüklü versiyona bakıp programı uygun versiyonda tekrar yazdım. (Ben 4 yada 4.5 versiyon ile yazmıştım Win Xp de yanlış hatırlamıyorsam 3.03 gibi bir versiyon vardı) Sorduğun soruya cevap olur inşallah..
Yeni program yazmak istemişsin fakat IT partnerimiz güvenlik sebebi ile dışarıdan yazılım çalıştırmama izin vermeyecektir ne yazık ki. ( Şu an Departman Müdürü seviyesinin altında kimsede USB port bile çalışmıyor.)
Ama yine de çok teşekkürler abi.
-
:) Cok akilli bu IT partnerleri (ben de gecen sene bırakana kadar system admin olarak calisiyordum - calistigim müşterilerde boyle akilli IT'ci her zaman cikiyor).
Yukarıdaki kodunda, yeni .Net versiyonu gerektirecek bir şey göremedim aslinda. Projeni, ,.Net framework 2.0 ve x86 platformu olarak yeniden derle, sorun cikmamasi lazim.
Not: Yukaridaki gereksiz usingleri de kodunda sag tiklayarak kaldır.
How to create a Minimal, Reproducible Example
The way to Go.
World's most advanced open source (object-) relational Database.
Flutter (for mobile, for web & desktop.
- Düzenleyen CetinBasozEditor 19 Eylül 2019 Perşembe 15:25
-
Söylediklerini yarın deneyeceğim abi.
Not: IT partnerin suçu yok abi :) Biz bildirim açıyoruz onay Almanya Merkeze düşüyor. Çok sıkı bir sistem kurdular.
4-5 sene önce saatlik Administrator yetkisi bile alabiliyordum. Şimdi USB bile takıp çalıştıramıyorum ne yazık ki. Ama bir yandan iyi oldu. Bir sürü fuzuli işi bu sayede yapmıyorum :)
-
Söylediklerini yarın deneyeceğim abi.
Not: IT partnerin suçu yok abi :) Biz bildirim açıyoruz onay Almanya Merkeze düşüyor. Çok sıkı bir sistem kurdular.
4-5 sene önce saatlik Administrator yetkisi bile alabiliyordum. Şimdi USB bile takıp çalıştıramıyorum ne yazık ki. Ama bir yandan iyi oldu. Bir sürü fuzuli işi bu sayede yapmıyorum :)
:) Simdi kızdım iste, sanki Almanlar cok akilli da size guvenmiyorlar gibi olmuş. Siz katlanıyorsanız diyecek bir şey yok tabii.
How to create a Minimal, Reproducible Example
The way to Go.
World's most advanced open source (object-) relational Database.
Flutter (for mobile, for web & desktop. -
Abi Söylediğin değişiklikleri yaptım ve x86 için derledim. Oldu şuan bilgisayarda sorunsuz çalışıyor.
Bunun haricinde bekli faydalanmak isteyenler olursa diye yanlış yaptığım bir kaç şeyi daha düzelttim, onları da yazayım belki birine faydası olur.
İlk olarak filesystemwacher ın pathini değiştirmeyi unutmuşum onu değiştirdim.
Sonrasında x86 olacak şekilde derledim.
Programı denemek için atölyeye gtitiğim de şu hatayı aldım.
Aklıma ilk olarak gelen şey Framework uyumsuzluğu oldu, sonrasında hemen toparladım ve ölçüm sonuçları yazılmadan yani işlem bitmeden dosyayı taşımaya çalışıyor olabileceğim aklıma geldi.
using System.Threading;
ekledikten sonra
private void fileSystemWatcher1_Created(object sender, System.IO.FileSystemEventArgs e) {
Thread.Sleep(2000);
ekledim.
Sorunsuz çalışıyor. Desteğiniz için tekrardan teşekkürler.
Not: USB ile ilgili prosedur sadece Türkiye için değil Tüm Dünya da ki Lokasyonlarımız da uygulanan genel bir prosedür abi. Almanlar dahil. :)