2017-08-13 6 views
0

私は読み取り専用のファイルポインタ(*os.File)である必要がある文字列を持っています。関数は*os.Fileしか受け付けないので、strings.NewReaderを使用することはできません。これは可能ですか?文字列から* os.Fileのインスタンスを作成するにはどうすればよいですか?

文字列を直接ファイルに書き込んでから、もう一度開くことができたと思います。しかし、私はこのステップを避けたいと思います。

+0

これはサードパーティライブラリの制限ですか? –

答えて

1

文字列から*os.Fileを作成することはできません。 io.Readerを使用できない場合は、文字列をテンポラリファイルに書き込んでから、os.Openを使用して*os.Fileを取得することをおすすめします。

4

短い答えはできないということです。このため、実際に手動のシステムコールやos.Fileが必要な他のものを実行していない限り、os.Fileを取る関数を書くためには、Goでは一般的に推奨されていません。代わりに、関数は必要なものに応じてio.Readerまたは別のインタフェース(おそらくio.Seekerを含む)を受け入れる必要があります。

os.Fileが必要な場所を変更できる場合は、それが最善の策です。あなたができない場合、それは本当に読者だけが必要な場合は、os.Pipeを使用することができます。

より多くの文脈で、私はより良い推奨を与えることができるかもしれません。