在C#文件处理中记录删除问题 [英] Record Removing Problem in C# File Handling

查看:68
本文介绍了在C#文件处理中记录删除问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

大家好!



请参阅代码并告诉我解决方案,问题当我从文件中删除记录时它只有它删除学生姓名和年龄并且没有删除学生卷号我尝试了我的最佳但我不明白这个问题请告诉我如果有人知道这个。请帮帮我!


 使用系统; 
使用 System.Collections.Generic;
使用 System.Linq;
使用 System.Text;
使用 System.Threading.Tasks;
使用 System.IO;
命名空间 File_Stream_1
{
class 计划
{
静态 void Main( string [] args)
{
string 名称;
int Age,Roll;
string FileName = Text.txt ;
/ * 文件中的数据写入会话
========== ========================================== * /


// TextWriter Writer = File.AppendText(FileName);
TextWriter Write_Data = new StreamWriter(FileName, true );
Console.Write( 输入名称:);
Name = Console.ReadLine();
Write_Data.WriteLine(Name);
Console.Write( \ nEnter年龄:);
Age = Convert.ToInt16(Console.ReadLine());
Write_Data.WriteLine(Age);
Console.Write( \ n输入卷号:);
Roll = Convert.ToInt16(Console.ReadLine());
Write_Data.WriteLine(Roll);
Write_Data.Close();
/ * 文件中的数据读取会话
========== ========================================== * /

// StreamReader Read_Data = new StreamReader(FileName);
TextReader Read_Data = new StreamReader(FileName);
Console.Write( \\\
输入数据Is.\
);
string 行; int Count = 0 ;
while (Read_Data.Peek()!= -1)
{
Console.Write( \ nStudent Name:);
Line = Read_Data.ReadLine();
Console.Write(Line);
Console.Write( \ nStudentnt年龄:);
Line = Read_Data.ReadLine();
Console.Write(Line);
Console.Write( \ nStudent Roll Number:);
Line = Read_Data.ReadLine();
Console.Write(Line);
++伯爵;
}
Read_Data.Close();
/ * 数据删除文件中的会话
========== ========================================== * /

string Name_Remove,Copy_File = Copy_Data.txt ;
Console.Write( \ n\\\
Enter删除Recods的名称:
);
Name_Remove = Console.ReadLine();
// 现在创建其他文件以删除数据
TextReader Remove_Data = < span class =code-keyword> new
StreamReader(FileName);
TextWriter Copy_Data = new StreamWriter(Copy_File);
while (Remove_Data.Peek()!= -1)
{
if (Name_Remove!= Remove_Data.ReadLine())
{
// Take命名并将其复制到另一个文件
Name_Remove = Remove_Data.ReadLine();
Copy_Data.Write(Name_Remove);
// 取年龄并将其复制到另一个文件
Name_Remove = Remove_Data.ReadLine ();
Copy_Data.Write(Name_Remove);
// 获取卷号并将其复制到另一个文件
Name_Remove = Remove_Data。的ReadLine();
Copy_Data.Write(Name_Remove);
Found = 1 ;
Console.Write( \ nReccord成立。);
}
}
Copy_Data.Close();
Remove_Data.Close();
File.Delete(FileName);
File.Move(Copy_File,FileName);
if (Found == 0
{
Console。写( \ nRecords Not Found。);
}
TextReader NewFile = new StreamReader(FileName);
while (NewFile.Peek()!= -1)
{
Console.Write( \ nStudent Name:);
Name = NewFile.ReadLine();
Console.Write(Name);
Console.Write( \ nStudentnt年龄:);
Name = NewFile.ReadLine();
Console.Write(Name);
Console.Write( \ nStudent Roll:);
Name = NewFile.ReadLine();
Console.Write(Name);
}
Console.ReadKey();
}
}
}

解决方案

首先,使用专有名称。例如。你不小心使用 Name_Remove ,难怪你不再理解代码了。

其次,你读了初始 Name_Remove 而不存储它 - 所以你丢失了初始字段条目,因此逐渐与你的数据不同步。

干杯

Andi

Hello Everyone!

Please See the Code and Tell me Solution,Problem When i Delete The Records From the File then it Only Delete "Student Name and Age "And Did not Delete The Student Roll Number i try my Best But I Did Not Understand The Problem Please Tell me If Any One Know About this.Please Help Me!

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
namespace File_Stream_1
{
    class Program
    {
        static void Main ( string[] args )
        {
            string Name;
            int Age, Roll;
            string FileName = "Text.txt";
                                 /*Data Writing Session in The File
                         ====================================================*/

            //TextWriter Writer = File.AppendText(FileName);
            TextWriter Write_Data = new StreamWriter(FileName,true);
            Console.Write("Enter Name:");
            Name = Console.ReadLine();
            Write_Data.WriteLine(Name);
            Console.Write("\nEnter Age:");
            Age = Convert.ToInt16(Console.ReadLine());
            Write_Data.WriteLine(Age);
            Console.Write("\nEnter Roll Number:");
            Roll = Convert.ToInt16(Console.ReadLine());
            Write_Data.WriteLine(Roll);
            Write_Data.Close();
                                 /*Data Reading Session in The File
                         ====================================================*/
            //StreamReader Read_Data = new StreamReader(FileName);
            TextReader Read_Data=new StreamReader(FileName);
            Console.Write("\nThe Enter Data Is.\n");
            string Line; int Count = 0;
            while (Read_Data.Peek() != -1)
            {
                Console.Write("\nStudent Name:");
                Line = Read_Data.ReadLine();
                Console.Write(Line);
                Console.Write("\nStudent Age:");
                Line = Read_Data.ReadLine();
                Console.Write(Line);
                Console.Write("\nStudent Roll Number:");
                Line = Read_Data.ReadLine();
                Console.Write(Line);
                ++Count;
            }
            Read_Data.Close();
                                  /*Data Removing Session in The File
                         ====================================================*/
            string Name_Remove, Copy_File = "Copy_Data.txt"; 
            Console.Write("\n\nEnter Name For Removing The Recods:");
            Name_Remove = Console.ReadLine();
            //Now Make Other File To Remove The Data
            TextReader Remove_Data = new StreamReader(FileName);
            TextWriter Copy_Data = new StreamWriter(Copy_File);
            while (Remove_Data.Peek() != -1)
            {
                if (Name_Remove != Remove_Data.ReadLine())
                {
                    //Take Name And Copy it Another File
                    Name_Remove = Remove_Data.ReadLine();
                    Copy_Data.Write(Name_Remove);
                    //Take Age And Copy it Another File
                    Name_Remove = Remove_Data.ReadLine();
                    Copy_Data.Write(Name_Remove);
                    //Take Roll Number And Copy it Another File
                    Name_Remove = Remove_Data.ReadLine();
                    Copy_Data.Write(Name_Remove);
                    Found = 1;
                    Console.Write("\nRecord Is Founded.");
                }
            }
            Copy_Data.Close();
            Remove_Data.Close();
            File.Delete(FileName);
            File.Move(Copy_File, FileName);
            if (Found == 0)
            {
                Console.Write("\nRecords Is Not Found.");
            }
            TextReader NewFile = new StreamReader(FileName);
            while (NewFile.Peek() != -1)
            {
                Console.Write("\nStudent Name:");
                Name = NewFile.ReadLine();
                Console.Write(Name);
                Console.Write("\nStudent Age:");
                Name = NewFile.ReadLine();
                Console.Write(Name);
                Console.Write("\nStudent Roll:");
                Name = NewFile.ReadLine();
                Console.Write(Name);
            }
            Console.ReadKey();
        }
    }
}

解决方案

First of all, use proper names. E.g. you use Name_Remove carelessly, no wonder you don't understand the code any more.
Second, you read the initial Name_Remove without storing it - so you loose the initial field entry and so get progressively out-of-sync with your data.
Cheers
Andi


这篇关于在C#文件处理中记录删除问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆