web-dev-qa-db-fra.com

Comment écrire dans un fichier .NET Core?

Je souhaite utiliser les fonctions Bluetooth LE dans .NET Core (en particulier BluetoothLEAdvertisementWatcher) pour écrire un scanner qui enregistre les informations dans un fichier. Ceci doit être exécuté en tant qu'application de bureau et de préférence en tant qu'application en ligne de commande.

Des constructeurs comme System.IO.StreamWriter (chaîne) ne sont apparemment pas disponibles. Comment créer un fichier et y écrire?

Je serais tout aussi heureux de pouvoir faire un System.Console.WriteLine (chaîne), mais cela ne semble pas non plus être disponible sous .NET Core.

Mise à jour: pour clarifier, si je pouvais avoir un programme qui ressemble à ceci couru sans erreur, je vais aller aux courses.

using System;
using Windows.Devices.Bluetooth.Advertisement;

namespace ConsoleApplication
{
    public class Program
    {
        public static void Main(string[] args)
        {
            BluetoothLEAdvertisementWatcher watcher = new BluetoothLEAdvertisementWatcher();
            Console.WriteLine("Hello, world!");
        }
    }
}

Mise à jour 2: Voici le fichier project.json:

{
  "dependencies": {
    "Microsoft.NETCore.UniversalWindowsPlatform": "5.0.0"
  },
  "frameworks": {
    "uap10.0": {}
  },
  "runtimes": {
    "win10-arm": {},
    "win10-arm-aot": {},
    "win10-x86": {},
    "win10-x86-aot": {},
    "win10-x64": {},
    "win10-x64-aot": {}
  }
}

Le résultat de la commande dotnet -v run contient ce message d'erreur:

W:\src\dotnet_helloworld>dotnet -v run
...
W:\src\dotnet_helloworld\Program.cs(2,15): error CS0234: The type or namespace name 'Devices' does not exist in the namespace 'Windows' (are you missing an Assembly reference?)
...
40
gauss256

Ce code est le squelette que je cherchais lorsque j'ai posé la question. Il utilise uniquement les fonctionnalités disponibles dans .NET Core.

var watcher = new BluetoothLEAdvertisementWatcher();

var logPath = System.IO.Path.GetTempFileName();
var logFile = System.IO.File.Create(logPath);
var logWriter = new System.IO.StreamWriter(logFile);
logWriter.WriteLine("Log message");
logWriter.Dispose();
80
gauss256

Encore mieux:

var logPath = System.IO.Path.GetTempFileName();
using (var writer = File.CreateText(logPath))
{
    writer.WriteLine("log message"); //or .Write(), if you wish
}
16
Soma Mbadiwe

C'est la solution que j'utilise. Il utilise moins de lignes de code et fait le travail aussi bien. Il est également très compatible avec .NET Core 2.0

using (StreamWriter writer = System.IO.File.AppendText("logfile.txt"))
{
    writer.WriteLine("log message");
}
13
Temi Lajumoke

À compter d’aujourd’hui, avec RTM, il semble exister également ce moyen plus court:

var watcher = new BluetoothLEAdvertisementWatcher();

var logPath = System.IO.Path.GetTempFileName();
var logWriter = System.IO.File.CreateText(logPath);
logWriter.WriteLine("Log message");
logWriter.Dispose();
9
superjos

Vous pouvez obtenir les références System.IO en utilisant le référentiel git corefx . Cela rendra le constructeur StreamWrite (chaîne) que vous recherchez disponible.

Ce référentiel vous donnera également la fonction Console.WriteLine (chaîne) que vous recherchez.

1
Fanus du Toit

Fait plus simple:

    using System.IO;
    ----------------

    var watcher = new BluetoothLEAdvertisementWatcher();

    var streamWriter = new StreamWriter($"Enter\\filepath\\here\\Log.txt");

    streamWriter.WriteLine("Log Message");

    streamWriter.Dispose();

J'espère que ça aide!

0
Arjun mg