2016-02-10 4 views
23

मैं एक स्कैनर जो एक फाइल करने के लिए जानकारी लॉग लिखने के लिए नेट कोर (विशेष रूप से, BluetoothLEAdvertisementWatcher) में ब्लूटूथ LE कार्यों का उपयोग करना चाहते हैं। यह एक डेस्कटॉप अनुप्रयोग के रूप में चलाने के लिए और अधिमानतः एक कमांड लाइन ऐप के रूप में चलाने के लिए है।.NET कोर में किसी फ़ाइल को कैसे लिखें?

कंस्ट्रक्टर्स System.IO.StreamWriter (स्ट्रिंग) की तरह उपलब्ध, जाहिरा तौर पर नहीं कर रहे हैं। मैं एक फाइल कैसे बना सकता हूं और इसे लिख सकता हूं?

मैं बस के रूप में एक System.Console.WriteLine (स्ट्रिंग) करने में सक्षम हो करने में खुशी होगी, लेकिन है कि या तो नेट कोर के तहत उपलब्ध होने की नहीं लगती।

अद्यतन: स्पष्ट करने के लिए, अगर मैं एक प्रोग्राम है जो बिना किसी त्रुटि के इस रन की तरह लग रहा हो सकता है, मैं दौड़ के लिए रवाना हो जाएगा।

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:

{ 
    "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 के उत्पादन में इस त्रुटि संदेश में शामिल हैं:: यहाँ project.json फ़ाइल है

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?) 
... 
+0

यह एक ही आप WinRT के लिए क्या करने की जरूरत के रूप में है के साथ बहुत comparible है? http://blog.jerrynixon.com/2012/06/windows-8-how-to-read-files-in-winrt.html –

+0

क्या आप project.json फ़ाइल साझा कर सकते हैं? हो सकता है कि आप कुछ पैकेज संदर्भ खो रहे हों। –

+0

@VictorHurdugaci मैंने परिणामस्वरूप त्रुटि संदेश के साथ-साथ प्रोजेक्ट.जेसन फ़ाइलों में से एक को शामिल करने के लिए प्रश्न संपादित किया है। इसमें कोई संदेह नहीं है कि संदर्भ गलत हैं, मैं यहां अंधा उड़ रहा हूं। यह विशेष प्रोजेक्ट.जेसन को एक .NET कोर प्रोजेक्ट के लिए विजुअल स्टूडियो 2015 प्रोजेक्ट टेम्पलेट से लिया गया था। – gauss256

उत्तर

51

इस कोड कंकाल मैं जब मैं सवाल उठाया लिए देख रहा था है। यह केवल .NET कोर में उपलब्ध सुविधाओं का उपयोग करता है।

var watcher = new BluetoothLEAdvertisementWatcher(); 

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

महान काम करता है। मैं लगभग छह महीने में अनुमान लगा रहा हूं कि इसमें कई सौ अपवॉट होंगे। – GDB

1

आप System.IO संदर्भ प्राप्त कर सकते हैं corefx गिट भंडार का उपयोग करके। यह स्ट्रीमवाइट (स्ट्रिंग) कन्स्ट्रक्टर को आप उपलब्ध कराने के लिए देख रहे हैं।

यह भंडार भी आप Console.WriteLine (स्ट्रिंग) समारोह आप देख रहे हैं दे देंगे।

+0

अच्छा लगता है, लेकिन मैं अभी भी अटक गया हूँ। मैंने कोरफैक्स स्थापित और बनाया है। अब क्या? क्या मैं इसे विजुअल स्टूडियो प्रोजेक्ट में संदर्भ के रूप में जोड़ूं? क्या मैं 'dotnet' आदेशों का उपयोग करके अपना प्रोग्राम तैयार और चलाता हूं? मैंने अपने मूल प्रश्न में एक कोड स्निपेट जोड़ा है ताकि यह स्पष्ट किया जा सके कि मैं पहले चरण के रूप में क्या हासिल करना चाहता हूं। – gauss256

+0

एक बार इसे बनाया जाने के बाद आपको इसे एक संदर्भ हां के रूप में जोड़ने की आवश्यकता है, तो आप सिस्टम.आईओ लाइब्रेरी को सिस्टम.आईओ का उपयोग कर फ़ाइल के शीर्ष पर उपयोग करके सिस्टम.आईओ लाइब्रेरी को शामिल करने में सक्षम होंगे; ' –

+0

हो सकता है ऐसा करने का तरीका, लेकिन कोरफैक्स के संदर्भों को शामिल करने के लिए किए गए हर प्रयास को .NET कोर से विवादित किया गया। – gauss256

7

आज के रूप में, आरटीएम के साथ, वहाँ भी इस छोटे रास्ते हो रहा है। यह कोड की कम लाइनों का उपयोग करता है, और नौकरी उतनी ही अच्छी है। यह भी नेट कोर 2,0

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

और भी बेहतर:

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

यह समाधान मैं उपयोग कर रहा हूँ है

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(); 
संबंधित मुद्दे