• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

LuBoc

Inserir texto numa posição de um ficheiro txt

2 mensagens neste tópico

Olá.

Gostaria de fazer um Append a um ficheiro de texto, mas em vez de ser no fim do ficheiro seria numa posicao específica, sobre ponto o que lá exista.

Caso concreto:

Tenho num ficheiro.txt:

Linha 1

Linha 2

Linha 3

E queria inserir a informação seguinte, de modo a sobrepor a ultima linha:

Nova Linha 1

Nova Linha 2

Ficando portanto o ficheiro.txt com o aspecto:

Linha 1

Linha 2

Nova Linha 1

Nova Linha 2

Podiam-me ajudar nesta situação?

Abrindo o ficheiro em modo Appende e utilizando o BaseStream.Seek(...) indica-me que nesse modo não posso fazer pesquisas para trás!

Obrigado,

LB

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

No outro dia estive a ver na ajuda do visual studio e descobri:

using System;
using System.IO;

class FStream
{
    static void Main()
    {
        const string fileName = "Test#@@#.dat";

        // Create random data to write to the file.
        byte[] dataArray = new byte[100000];
        new Random().NextBytes(dataArray);

        using(FileStream  
            fileStream = new FileStream(fileName, FileMode.Create))
        {
            // Write the data to the file, byte by byte.
            for(int i = 0; i < dataArray.Length; i++)
            {
                fileStream.WriteByte(dataArray[i]);
            }

            // Set the stream position to the beginning of the file.
            fileStream.Seek(0, SeekOrigin.Begin);

            // Read and verify the data.
            for(int i = 0; i < fileStream.Length; i++)
            {
                if(dataArray[i] != fileStream.ReadByte())
                {
                    Console.WriteLine("Error writing data.");
                    return;
                }
            }
            Console.WriteLine("The data was written to {0} " +
                "and verified.", fileStream.Name);
        }
    }
}

penso que a linha:

fileStream.Seek(0, SeekOrigin.Begin);

vai em conta com as tuas necessidades.

cumps ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora