Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Palmeira

[Resolvido] Tratamento de Ficheiros em C#

Mensagens Recomendadas

Palmeira

Boas, após algum tempo sem parar pelos fóruns do P@P, voltei, tal e qual filho pródigo a um dos fóruns que me motivou a aprender e a gostar de programação.

Estou com uma dúvida e consequentemente um problema num projecto que involve a criação/manipulação de ficheiros, criação/manipulação de directorias em C#.

Tenho este código, que para já resolve (temporariamente, e a "martelo") a criação/manipulação de ficheiros e directórios.

O que eu preciso/quero/necessito, é que o programa me crie as directorias dentro da pasta do projecto em que estou a trabalhar, quero que estes ficheiros fiquem em pastas á parte do resto da aplicação, mas o código abaixo cria-me, tal e qual como deve(tendo em conta o código abaixo), uma pasta TempFiles na drive C:\ , e que tem o ficheiro "requisicoes.txt".

Pergunto isto, porque quando trabalho com pastas dentro dum projecto em XNA, consigo carregar content de pastas "personalizadas", sem ter de andar com grandes voltas no cód. fonte.

É possível fazer o que eu pretendo ??

Caso não entendam algum ponto da minha dúvida, digam-me pfavor :)

Se estou a ser "burro" e tapado em relação a isto, atirem-se a mim,

private void btn_Enviar_Click(object sender, EventArgs e)
	{
		FileStream fs = new FileStream(@"\TempFiles\requisicoes.txt", FileMode.OpenOrCreate, FileAccess.Write);
		StreamWriter sw = new StreamWriter(fs);
		var cxText = new List<TextBox>
		{
			txtLivros, txtNomeReq, txtNumReq
		};
		if (cxText.Any(TextBox => string.IsNullOrEmpty(TextBox.Text)))
		{
			MessageBox.Show("Faltam Preencher Campos Necessários");
		}
		else
		{
			MessageBox.Show("Pedido efectuado com sucesso!");
		}
		sw.WriteLine("nome- " + txtNomeReq.Text);
		sw.WriteLine("num- " + txtNumReq.Text);
		sw.WriteLine("livro- " + txtLivros.Text);
		sw.Flush();
		sw.Close();
		fs.Close();
	}
Obrigado,

palmeira

PS : estive a ver um tópico parecido, mas neste caso não me interessa trabalhar com FileDialog, porque pretendo que este ficheiro seja criado em runtime, sem necessidade de input por parte do utilizador :)

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
apocsantos

Bom dia,

Trabalhar com ficheiros mesmo quando se está a usar XNA é possivel. Se a ideia for que a cada instalação o local dos ficheiros mude, é preciso fazer o código para isso, (para obter a path), caso contrario o FileStream e o StreamWrite estão disponiveis na mesma.

Se o objectivo for carregar por exemplo dados de um jogo, existem outras formas de o fazer.

Cordiais cumprimentos,

Apocsantos


"A paciência é uma das coisas que se aprendeu na era do 48k" O respeito é como a escrita de código, uma vez perdido, dificilmente se retoma o habito"

assinatura.jpg

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pikax

podias ter uma varivel no codigo com o caminho para a pasta que queres usar, e sempre que vais fazer um file open usar o caminho dessa variavel:


class XPTO
{
 public static string AssetsPath{get;set;} //Propriedade auto-implementada com o caminho da pasta global

 public void saveitem()
 {
  FileStream fs = new FileStream(string.Format("{0}\\{1}",XPTO.AssetsPath,"requisicoes.txt"), FileMode.OpenOrCreate, FileAccess.Write);
  //etc...
 }
}

class XUPT
{
 //....
 public void AlgumaCoisaAGravar()
 {
   FileStream fs = new FileStream(string.Format("{0}\\{1}",XPTO.AssetsPath,"FicheiroQualquer.txt"), FileMode.OpenOrCreate, FileAccess.Write);
   //etc..
 }
}

Assim involve que se mudas a pasta dos ficheiros, basta so' mudar em um lugar, tambem podes em run-time mudar a pasta, ate' podes depois mudar a propriedade para fazer uma rotina quando mudas a pasta..

Se queres uma pasta para meter informacoes podes usar o Roaming(caminho relativo %appdata%) com o codigo:

string appRomingFolder = System.Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);


Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender.

A beleza de um código está em decompor problemas complexos em pequenos blocos simples.

"learn how to do it manually first, then use the wizzy tool to save time."

"Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."

Partilhar esta mensagem


Ligação 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

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.