C# ile TXT dosyasındaki verileri sütunlara yazma

joulte

Centipat
Katılım
27 Mart 2020
Mesajlar
13
Öncelikle merhabalar,
TXT dosyasında kayıtlı bazı verilerim var. TC No, Ad-Soyad gibi sütun başlıklarım var ve "tab" ile ayrılmış bu veriler. T.C. No'ların algoritma ile doğruluğunu kontrol edip yazdırabiliyorum ama benim yapmak istediğim şey, Kontrol sütununa yazdırabilmek. Yazdırdığım veriler hep "T.C." kısmının altına yazdırılıyor. İstediğim sütunlara bu verileri nasıl yazdırabilirim?

Kodum şu anlık böyle, nasıl konfigüre etmeliyim?

Kod:
string dosya = @"D:\verim.txt";
            string dosya2 = @"D:\verim2.txt";
            StreamReader SR = new StreamReader(dosya);
            StreamWriter outputFile = File.AppendText(dosya2);

            string metin = SR.ReadLine();
            metin = SR.ReadLine();
           

            while (metin != null)
            {

                string[] sutunlar = metin.Split('\t');
                if (metin.Contains("TC") == false)
                {
                    string sonuc = (sutunlar[0]);
                    bool returnvalue = false;
                    if (sonuc.Length == 11)
                    {
                        Int64 ATCNO, BTCNO, TcNo;
                        long C1, C2, C3, C4, C5, C6, C7, C8, C9, Q1, Q2;

                        TcNo = Int64.Parse(sonuc.ToString());

                        ATCNO = TcNo / 100;
                        BTCNO = TcNo / 100;

                        C1 = ATCNO % 10; ATCNO = ATCNO / 10;
                        C2 = ATCNO % 10; ATCNO = ATCNO / 10;
                        C3 = ATCNO % 10; ATCNO = ATCNO / 10;
                        C4 = ATCNO % 10; ATCNO = ATCNO / 10;
                        C5 = ATCNO % 10; ATCNO = ATCNO / 10;
                        C6 = ATCNO % 10; ATCNO = ATCNO / 10;
                        C7 = ATCNO % 10; ATCNO = ATCNO / 10;
                        C8 = ATCNO % 10; ATCNO = ATCNO / 10;
                        C9 = ATCNO % 10; ATCNO = ATCNO / 10;
                        Q1 = ((10 - ((((C1 + C3 + C5 + C7 + C9) * 3) + (C2 + C4 + C6 + C8)) % 10)) % 10);
                        Q2 = ((10 - (((((C2 + C4 + C6 + C8) + Q1) * 3) + (C1 + C3 + C5 + C7 + C9)) % 10)) % 10);
                        returnvalue = ((BTCNO * 100) + (Q1 * 10) + Q2 == TcNo);
                    }
                   
                 
                    if (returnvalue)
                       
                    {
                       
                        outputFile.WriteLine("DOĞRU");
                     
                       
                    }
                    else
                    {
                       
                        outputFile.WriteLine("YANLIŞ");
                    }

                }
                metin = SR.ReadLine();
            }
            outputFile.Close();
        }
    }

Şu anki çıktı böyle ve en sondaki sütuna yerleştirmek istiyorum.
 
Son düzenleyen: Moderatör:
C# bilmiyorum da fikir vereyim. Veriyi satır satır çekip değişkene atayıp sona "Doğru, Yanlış" ekleyip üstüne yazabilirsiniz. Dosya çok büyükse bu yöntem belalı olabilir. Bu durumda parça parça veri çekmelisiniz.
 
2 cesit dosya yazma yapabilirsin:
1) Komple ustune yazarsin
2) Sonuna append edersin.

Cunku isletim sistemi ayni dosyanin icerigini sequential yazar, sadece aradaki tek bir karakteri degistirmek, onun pesisira gelen tum karakterlerin yerini kaydirmak anlamina gelir bu da zaten dosyayi komple degistirmen demek.

O yuzden dosyayi okursun, process edersin ve output ciktisini dosyanin uzerine tekrar yazarsin.
Eger process edecegin data cok buyukse satir satir okursun, satir satir process edersin, yeni bir tmp dosya olusturur ona da satir satir yazarsin ( buffering. )
Islem bitince tmp dosyayi, output dosyayla degistirirsin ve tmp dosyayi silersin.
 

Yeni konular

Geri
Yukarı