Member 14001444 Ответов: 2

C# считывает текстовый файл и обновляет его


Поэтому я пытаюсь создать метод для чтения файла *.txt, проблема в том, что он показывает мне, что находится внутри файла, но когда я захожу в файл .txt и обновляю его вручную, он не обновляется, если я пытаюсь прочитать его снова.

Код: http://prntscr.com/l00fzu[^]

Что я уже пробовал:

В принципе я попробовал еще кое что но я хочу чтобы это было просто как на Принтскрине

[no name]

Вы работаете над веб-приложением?

Richard MacCutchan

Вы должны обновить что-то еще. Вы никак не можете обновить этот файл без того, чтобы новые данные не были там в следующий раз, когда вы попытаетесь его прочитать.

2 Ответов

Рейтинг:
4

Member 14001444

Спасибо вам всем, я попробую "отладить", как сказал OriginalGriff, я действительно Новичок и программирую, но спасибо вам всем! и нет, я не работаю над веб-приложением, это просто школьный проект в консоли, Ну и еще вопрос, есть ли что-то вроде отладки в IntelliJ (Java)?

Thank You all i will try "Debugging" like OriginalGriff said, i'm really a beginner and programming though but thank you all!

So i was trying to use the the bug mode and something is not right i can't really seem to find the error, i will try to clarify things for you guys so first of all here is the code:

<pre>using System;
using System.IO;

// Aula de manipulação de files do tipo TXT
/* Procedimentos:
    1- criar uma string com o caminho e nome de um ficheiro a criar no disco
    2- Usar um método nativo para criar o ficheiro
    3- Usar um método nativo para ler o ficheiro*/

namespace Cap07_Aula01_FilesTxt
{
    class Program
    {
        static void Main(string[] args)
        {
            //String fileLocation = "D:\\Users\\a49240\\Desktop\\";
            String fileLocation = "C:\\Users\\Hugo\\Desktop\\";
            //String fileLocation = "C:\\Users\\????\\Desktop\\teste.txt";

            String name = "";    //Inicialização da string name

            //Pede o nome do fichero enquanto a extensão não for .txt ou o nome for menor que 4
            do
            {
                System.Console.WriteLine("Insira o nome do ficheiro! (A extensão tem de ser .txt)");
                name = Console.ReadLine();
            } while (name.Length < 4 || name.Substring(name.Length -4) != ".txt");

            //CreateFile(fileLocation); // Criar file
            CreateFile(name, fileLocation);
            WriteToFile(fileLocation+name); //Escrever dentro do ficheiro
            ReadFromFile(fileLocation + name);  //Lê o ficheiro TXT
        }

        /// <summary>
        /// Criar Ficheiro TXT
        /// </summary>
        /// <param name="file">recebe localização do ficheiro a criar</param>
        static void CreateFile(string file)
        {
            // Bloco try-catch para apanhar eventual exceção do tipo IOException
            try
            {
                //Tentativa de criação do ficheiro
                StreamWriter streamWriter = new StreamWriter(file); //Cria a file, caso não exista se exister abre-a
                System.Console.WriteLine("O ficheiro foi criado com sucesso");
                streamWriter.Close();                               //Necessário fechar sempre a file após uso
            }
            catch (IOException e)
            {
                // Se for gerada a exceção, esta é a resposta
                Console.WriteLine("O ficheiro não pode ser criado. \n\n\n");
                Console.WriteLine(e.StackTrace);
            }
            catch (ArgumentException e)
            {
                // Se for gerada a exceção, esta é a resposta
                Console.WriteLine("Há carateres ilegais no caminho indicado. \n\n\n");
                Console.WriteLine(e.StackTrace);
            }
        }

        /// <summary>
        /// Cria um Ficheiro TXT
        /// </summary>
        /// <param name="name">nome do ficheiro</param>
        /// <param name="location">localização (path) do ficheiro</param>
        static void CreateFile(string name,string location)
        {
            string file = location + name;  //Concatena a localização e o nome

            // Bloco try-catch para apanhar eventual exceção do tipo IOException
            try
            {
                //Tentativa de criação do ficheiro
                StreamWriter streamWriter = new StreamWriter(file); //Cria a file, caso não exista se exister abre-a
                System.Console.WriteLine("O ficheiro foi criado com sucesso");
                streamWriter.Close();                               //Necessário fechar sempre a file após uso
            }
            catch (IOException e)
            {
                // Se for gerada a exceção, esta é a resposta
                Console.WriteLine("O ficheiro não pode ser criado. \n\n\n");
                Console.WriteLine(e.StackTrace);
            }
            catch (ArgumentException e)
            {
                // Se for gerada a exceção, esta é a resposta
                Console.WriteLine("Há carateres ilegais no caminho indicado. \n\n\n");
                Console.WriteLine(e.StackTrace);
            }
        }

        /// <summary>
        /// Escrita no Ficheiro
        /// </summary>
        /// <param name="file">Localizaçao do ficheiro</param>
        static void WriteToFile(string file)
        {
            // Bloco try-catch para apanhar eventual exceção do tipo IOException
            try
            {
                StreamWriter sw = new StreamWriter(file); //Cria a file, caso não exista se existir abre-a
                sw.Write("Olá mundo");                    //Escreve na file
                sw.WriteLine(", eu sou o ");
                sw.Close(); //Necessário fechar a file para poder ser lido

                Console.WriteLine("Escrita no ficheiro com SUCESSO");
            }
            catch (IOException e)
            {
                Console.WriteLine("Escrita no ficheiro com erros... NABO\n\n\n");
                Console.WriteLine(e.StackTrace);
            }
            catch(ArgumentException e)
            {
                // Se for gerada a exceção esta é a resposta
                Console.WriteLine("Há carateres ilegais no caminho indicado . \n\n\n");
                Console.WriteLine(e.StackTrace);
            }
        }

        public static void ReadFromFile(String nameLocation)
        {
            try
            {
                String fileText = System.IO.File.ReadAllText(nameLocation);

                System.Console.WriteLine(fileText);

                System.Console.WriteLine("\nReadFromFile: O ficheiro foi lido");
            }
            catch (FileNotFoundException e)
            {
                System.Console.WriteLine("ReadFromFile: Ficheiro não encontrado");
            }
            catch (IOException e)
            {
                System.Console.WriteLine("ReadFromFile: Problemas com acesso ao ficheiro");
            }
            catch (Exception e)
            {
                System.Console.WriteLine("ReadFromFile: Apanhada qualquer outra exceção");
            }


        }
    }
}


Я надеюсь, что это поможет, даже если это на моем родном португальском языке, так что проблема заключается в методе ReadFromFile, который он может прочитать и показать мне, что было написано с помощью метода WriteToFile (печать консоли в помощь: https://prnt.sc/l04i8q[^]
На данный момент все в порядке, но когда я иду в блокнот и пытаюсь изменить его, когда я снова выполняю свой код, он не читает то, что я только что обновил. Я надеюсь, что это поможет вам, ребята, помочь мне разобраться в этом. У вас есть код, так что вы можете попробовать его сами, даже если он на португальском языке.

О, я забыл упомянуть, что у меня есть тот же проект на Java, я пытаюсь скопировать его на C#, он отлично работает на Java.

package com.company;

import java.io.*;
import java.util.Scanner;

// Aula de manipulação de files do tipo TXT
/* Procedimentos:
    1- criar uma string com o caminho e nome de um ficheiro a criar no disco
    2- Usar um método nativo para criar o ficheiro
    3- Usar um método nativo para ler o ficheiro*/

public class Main {

    public static void main(String[] args) {

        Scanner teclado = new Scanner(System.in);   //Criação e inicialização do scanner teclado

        String fileLocation = "D:\\Users\\a49240\\Desktop\\";
        //String fileLocation = "C:\\Users\\Hugo\\Desktop\\";
        //String fileLocation = "C:\\Users\\????\\Desktop\\teste.txt";

        String name;    //Inicialização da string name

        //Pede o nome do fichero enquanto a extensão não for .txt ou o nome for menor que 4
        do{
            System.out.println("Insira o nome do ficheiro! (A extensão tem de ser .txt)");
            name = teclado.nextLine();
        }while( name.length() < 4 || !name.substring(name.length() -4,name.length()) .equals(".txt"));

        System.out.println(name);   //Imprime o nome do ficheiro
        /////////////////////////////////////////////////////////////
        //  Criar File
        ////////////////////////////////////////////////////////////
        //CreateFile(fileLocation);
        CreateFile(name,fileLocation);

        //  Pausa para poder alterar o conteúdo da file
        try{
            System.out.print("\nPausa: Carregue numa tecla para continuar! ");
            System.in.read();
        }   catch (IOException e){
            System.out.print("ERRO na pausa:  \n\n "+e.getMessage());
        }

        //////////////////////////////////////////////////////////////
        //Escrita para um ficheiro
        /////////////////////////////////////////////////////////////

        WriteToFile(fileLocation+name,"Olá TGPSI"); // Escreve dentro do ficheiro

        //  Pausa para poder alterar o conteúdo da file
        try{
            System.out.print("\nPausa: Carregue numa tecla para continuar! ");
            System.in.read();
        }   catch (IOException e1){
            System.out.print("ERRO na pausa:  \n\n "+e1.getMessage());
        }

        ///////////////////////////////////////////////////////////////
        //  Ler um ficheiro txt
        ///////////////////////////////////////////////////////////////

        ReadFromFile(fileLocation+name);
    }

    /**
    * Criar Ficheiro TXT
     * @param nameLocation localização e nome do ficheiro
    


Рейтинг:
13

OriginalGriff

Во-первых, не давайте нам экранные дампы вашего кода: скопируйте и вставьте фактический код в ваш вопрос, чтобы мы могли попробовать его сами, не вводя его обратно.

Во-вторых, мы ничего не можем сделать для вас: он должен быть просмотрен во время выполнения вашего кода, и мы не можем этого сделать, потому что у нас нет доступа к вашей системе.

Так что все будет зависеть от тебя.
К счастью, у вас есть инструмент, который поможет вам выяснить, что происходит: отладчик. Если вы еще не использовали его, то быстрый Google для "Visual Studio debugger" должен дать вам необходимую информацию.

Поместите точку останова в первую строку функции и запустите код через отладчик. Затем посмотрите на свой код и на свои данные и определите, что должно произойти вручную. Затем по одному шагу в каждой строке проверяйте, что то, что вы ожидали, произойдет именно так, как и произошло. Когда это не так, тогда у вас есть проблема, и вы можете вернуться назад (или запустить ее снова и посмотреть более внимательно), чтобы выяснить, почему.

Извините, но мы не можем сделать это за вас - пришло время вам освоить новый (и очень, очень полезный) навык: отладку!