Também é possível utilizar uma função inicializadora do arquivo, veja:
namespace ByteBank;
class Program
{
private static readonly string caminhoArquivo = Path.Combine(Environment.CurrentDirectory, "contas.txt");
static void CriaArquivoSeNaoExistir()
{
Console.WriteLine(caminhoArquivo);
if (!File.Exists(caminhoArquivo))
{
FileStream fs = File.Create(caminhoArquivo);
fs.Close();
Console.WriteLine("Arquivo criado com sucesso!");
}
else
{
Console.WriteLine("Arquivo já existe!");
}
}
static void Main(string[] args)
{
CriaArquivoSeNaoExistir();
//outros códigos aqui
}
}
Path.Combine
e Environment.CurrentDirectory
formam o caminho absoluto do arquivo no contexto atual de execução independente de qual seja e independete de Sistema Operacional que esteja executando. A partir daí, é só fazer uso do caminhoArquivo
para referência-lo nas próximas instruções.
Um dos únicos erros que talvez possa ocorrer a partir disto, é erros relacionados a permissões do sistema de arquivos.
Ou também utilizar o OpenOrCreate
, dessa forma nem se faz necessário o uso do método.
namespace ByteBank;
class Program
{
private static readonly string caminhoArquivo = Path.Combine(Environment.CurrentDirectory, "contas.txt");
static void Main(string[] args)
{
FileStream fileStream = new(caminhoArquivo, FileMode.OpenOrCreate);
fileStream.Close();
}
}
O local que vai ser gerado o arquivo baseado na linha private static readonly string caminhoArquivo = Path.Combine(Environment.CurrentDirectory, "contas.txt");
depende de como o programa é executado. Com o uso do dotnet run
normalmente o arquivo será gerado na raiz do projeto mesmo, então:
No windows o caminho pode ser algo como:
C:\Users\<usuario>\dev\ByteBank\contas.txt
No Linux pode ser:
/home/<usuario>/dev/ByteBank/contas.txt
Já quando utilizados IDEs, algumas delas executam o .exe
(no caso do windows) gerado dentro da pasta Debug
ou em uma pasta publish
. Ou executam o arquivo compilado ELF no caso de sistemas linux também nessas pastas. Arquivos ELF em sistemas linux são como arquivos .exe
no windows, para verificar isso você pode entrar na pasta onde fica o arquivo compilado com cd bin/Debug/net7.0/
e então executar file -h ByteBank
. O retorno deve ser algo como:
ByteBank: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=c450da59bb69afc9b56f0bc9f9440fe6346e7317, stripped
Os caminhos de caminhoArquivo
, agora podem ser,
no windows, algo como:
C:\Users\<usuario>\dev\ByteBank\bin\Debug\net7.0\contas.txt
no Linux:
/home/<usuario>/dev/ByteBank/bin/Debug/net7.0/contas.txt