[英]C# file output prints more than 1 time
我有這個代碼:Class:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CTesteM7
{
internal class Borboletas
{
public string nomeAmigo { set; get; }
public string nomeEspecie { set; get; }
public int envergadura { set; get; }
public int b { set; get; }
public string classificacao { set; get; }
public int quantidade { set; get; }
public string pathInput { set; get; }
public string pathOutput { set; get; }
}
}
主要的:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
namespace CTesteM7
{
internal class Program
{
static void Main(string[] args)
{
//Lista / Classe
List<Borboletas> borboletas = new List<Borboletas>();
Borboletas dados = new Borboletas();
//Pedir ao utilizador o ficheiro de input
Console.Write("Nome do ficheiro de input: ");
dados.pathInput = Console.ReadLine();
//Verificar se o ficheiro existe
if (File.Exists(dados.pathInput))
{
//Ler o ficheiro
StreamReader srf = new StreamReader(dados.pathInput);
while (!srf.EndOfStream)
{
// Buscar a linha do numero ou seja q n contem ;
var linha = srf.ReadLine();
if (!linha.Contains(';'))
{
dados.b = int.Parse(linha);
}
else
{
string[] strArray;
strArray = linha.Split(';');
dados.nomeEspecie = strArray[1];
dados.envergadura = Convert.ToInt32(strArray[2]);
borboletas.Add(dados);
//Ficheiro de output
dados.pathOutput = @"Output.txt";
StreamWriter swo = new StreamWriter(dados.pathOutput, append: true);
swo.WriteLine(dados.b);
//Verificações da classificação das borboletas e escrever para o ficheiro
if (dados.envergadura >= 0 && dados.envergadura <= 50)
{
dados.classificacao = "Pequena";
swo.WriteLine(dados.nomeEspecie + ":" + dados.classificacao);
}
else if (dados.envergadura >= 51 && dados.envergadura < 70)
{
dados.classificacao = "Grande";
swo.WriteLine(dados.nomeEspecie + ":" + dados.classificacao);
}
else if (dados.envergadura >= 70)
{
dados.classificacao = "Gigante";
swo.Write(dados.nomeEspecie + ":" + dados.classificacao);
}
else
{
Console.WriteLine("Erro");
}
swo.Close();
}
}
//Confirmação
Console.WriteLine("\nOperação realizada com sucesso");
Console.ReadKey();
//Fechar os ficheiros
srf.Close();
//Adicionar os dados na lista
borboletas.Add(dados);
}
else
{
//Caso o ficheiro não exista mostrar erro
Console.WriteLine("O ficheiro pedido não existe, insira um nome válido\n");
}
}
}
}
我想將文件中的數據打印到 output 文件,但變量 dados.b(它的數字 3)打印 3 次到 output 文件,每次我運行程序時它都會添加每次新文本,但我不希望文本重復它自我, output 文件圖像
有誰知道是什么問題? 謝謝
swo.WriteLine(dados.b);
它在 while 循環中,因此您將執行 3 次,您可以添加一個帶有計數的標志以僅執行一次或將其從 while 循環中取出!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.