web-dev-qa-db-ja.com

.NET Coreのファイルに書き込む方法

.NET CoreのBluetooth LE機能(具体的には、BluetoothLEAdvertisementWatcher)を使用して、情報をファイルに記録するスキャナーを作成したい。これは、デスクトップアプリケーションとして、できればコマンドラインアプリとして実行することです。

System.IO.StreamWriter(string)のようなコンストラクターは使用できないようです。ファイルを作成して書き込むにはどうすればよいですか?

System.Console.WriteLine(string)を実行できるようになりますが、それは.NET Coreでも利用できないようです。

更新:明確にするために、このように見えるプログラムがエラーなしで実行できる場合、私はレースに出かけます。

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!");
        }
    }
}

更新2: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": {}
  }
}

コマンドdotnet -v runの出力には、次のエラーメッセージが含まれています。

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

このコードは、質問を提起したときに探していたスケルトンです。 .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

さらに良い:

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

これは私が使用しているソリューションです。使用するコードの行数が少なく、同じように仕事をします。また、.NET Core 2.0とも非常に互換性があります

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

今日の時点で、RTMでは、このより短い方法もあるようです。

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

corefx gitリポジトリを使用して、System.IO参照を取得できます。これにより、探しているStreamWrite(string)コンストラクタが利用可能になります。

このリポジトリは、探しているConsole.WriteLine(string)関数も提供します。

1
Fanus du Toit

よりシンプルに:

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

    var watcher = new BluetoothLEAdvertisementWatcher();

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

    streamWriter.WriteLine("Log Message");

    streamWriter.Dispose();

それが役に立てば幸い!

0
Arjun mg