Windowsフォームアプリケーションでは、ファイルがbyte[]
.
ユーザーがボタンをクリックすると、ファイルをローカルに保存せずに開きたいです。これは可能ですか?もしそうなら、どのように?
または、バイト配列をローカル ファイルとして保存し、このファイルを実行する必要がありますか?
ありがとう、カール
アプリケーションで開く場合 (Windows で適切な拡張子のファイルをダブルクリックした場合と同様)、その内容をファイルに書き込む必要があります。
/// <summary>
/// Saves the contents of the <paramref name="data"/> array into a
/// file named <paramref name="filename"/> placed in a temporary folder,
/// and runs the associated application for that file extension
/// in a separate process.
/// </summary>
/// <param name="data">The data array.</param>
/// <param name="filename">The filename.</param>
private static void OpenInAnotherApp(byte[] data, string filename)
{
var tempFolder = System.IO.Path.GetTempPath();
filename = System.IO.Path.Combine(tempFolder, filename);
System.IO.File.WriteAllBytes(filename, data);
System.Diagnostics.Process.Start(filename);
}
使用法:
var someText = "This is some text.";
var data = Encoding.ASCII.GetBytes(someText);
// open in Notepad
OpenInAnotherApp(data, "somename.txt");
ファイル名は拡張子にのみ必要であることに注意してください。おそらくランダムGuid
または何かを使用し、既知の MIME タイプに基づいて拡張子を追加する必要があります。