Pergunta

Eu estou usando um StreamWriter para registrar erros

a forma como ele foi concebido (por favor, não pergunte por quê) é abrir um novo cada vez que StreamWriter a aplicação tem que registrar uma mensagem. Ele produz tudo para ./Logs/[current-date].txt que geralmente se resolve a "c: \ MyAppFolder \ logs [current-date] .txt"

Tudo funciona corretamente, mas depois que eu usar um diálogo de arquivo aberto para dizer, "C: \ home \ myfolder \ myfile" StreamWriter tenta escrever para "c: \ home \ myfolder \ logs [current-date] .txt "

Eu sei soluções para este problema, mas eu só não entendo o que está acontecendo

Foi útil?

Solução

O diretório atual é um valor grande processo.

O OpenFileDialog está mudando o diretório atual.

Se você estiver usando a classe .NET OpenFileDialog, você pode definir a propriedade RestoreDirectory para true para dizer ao diálogo para deixar o diretório atual sozinho (embora a forma como os documentos para RestoreDirectory está escrito pode haver alguns problemas de segmentação, que imagino pode fazer isso ainda impróprio para um recurso de registro).

Outras dicas

Como Mike B disse, OpenFileDialog pode mudar o diretório atual. Desde ./ é relativo ao atual, que muda também.

Os modifica propriedade RestoreDirectory esse comportamento.

fazer algo como isto sim:

OpenFileDialog openFileDialog1 = new OpenFileDialog();

OpenFileDialog1.InitialDirectory = "c:\\" ;
openFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*" ;
openFileDialog1.FilterIndex = 2 ;
openFileDialog1.RestoreDirectory = true ;

MSDN .

Mike B é absolutamente correto.

Se você estiver usando a API nativa em vez de NET, você precisa definir a opção OFN_NOCHANGEDIR na estrutura OPENFILENAME. Os estados de documentação que ele não funciona para Windows XP, porém, não tenho certeza se isso se aplica à versão .NET ou não.

Não importa como você corrigir isso, estar ciente de que cada vez que a janela de ficheiros abre-se abrirá para trás em sua pasta original. Se você abrir muitos arquivos, a cura pode ser pior que a doença. Você pode ser melhor para começar o diretório atual quando o programa inicia, e antecedendo-lo aos seus nomes de arquivos.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top