Se lavori in una lingua che lo supporta, fornirei un metodo di salvataggio che utilizza un flusso. In questo modo, l'utente può salvare i dati ovunque desideri.
Il tempo di scrittura è più lungo di 20 secondi rispetto al salvataggio in un file, ma è facilmente comprensibile da un programmatore e sul sito di chiamata è molto chiaro ciò che accade realmente.
Il modo in cui lo hai descritto (un oggetto che legge input e output su un altro file) sembra strano. Qual è lo scopo della costruzione di un oggetto che fa tutto durante la costruzione?
La chiameresti in questo modo?
var stuff = DoStuff();
new SaveFileWeirdClass(stuff);
return;
Per qualsiasi ragionevole implementazione di SaveFileWeirdClass non mi aspetterei effetti collaterali dalla sua creazione. Leggere un file - bene. Creare un file? No.
Per me sembra più chiaro in questo modo:
var stuff = new StuffReader(); //Better name needed...
string filePath = this.whatever;
using(Stream stream = new FileStream(filePath))
stuff.Save(stream);