2017-08-13 1 views
0

Ich habe eine Zeichenfolge, die ich einen schreibgeschützten Dateizeiger (*os.File) sein muss. Ich kann strings.NewReader nicht verwenden, da die Funktion nur *os.File akzeptiert. Ist das möglich?Wie erstelle ich eine Instanz von * os.File aus einer Zeichenfolge?

Ich weiß, ich könnte die Zeichenfolge direkt in eine Datei schreiben und dann wieder öffnen. Aber ich möchte diesen Schritt vermeiden.

+0

Ist dies eine Einschränkung einer Drittanbieter-Bibliothek? –

Antwort

1

Sie können *os.File nicht aus einer Zeichenfolge erstellen. Wenn Sie io.Reader nicht verwenden können, ist es am besten, die Zeichenfolge in eine temporäre Datei zu schreiben und dann os.Open zu verwenden, um die *os.File zu erhalten.

4

Kurze Antwort ist, dass Sie nicht können. Aus diesem Grund wird es in Go normalerweise nicht empfohlen, Funktionen zu schreiben, die eine os.File verwenden, es sei denn, Sie führen einen manuellen Syscall oder etwas anderes aus, das eine os.File erfordert. Stattdessen sollten Ihre Funktionen je nach Bedarf einen io.Reader oder eine andere Schnittstelle (die möglicherweise io.Seeker enthält) akzeptieren.

Wenn Sie den Ort ändern können, der eine os.File benötigt, ist das Ihre beste Wahl. Wenn Sie nicht können und es wirklich nur einen Leser benötigt, könnten Sie os.Pipe verwenden.

Mit mehr Kontext, könnte ich in der Lage sein, eine bessere Empfehlung zu geben.

Verwandte Themen