Jika Anda bekerja dalam bahasa yang mendukungnya, saya akan memberikan metode Simpan yang mengambil Stream. Dengan begitu, pengguna dapat menyimpan data di mana pun ia inginkan.
Butuh 20 detik lebih lama untuk menulis daripada menyimpan hanya ke file, tetapi mudah dipahami oleh seorang programmer, dan di situs panggilan itu sangat jelas apa yang sebenarnya terjadi.
Cara Anda menggambarkannya (sebuah objek yang membaca input, dan output ke file lain) sebaliknya tampak aneh. Apa tujuan membangun objek yang melakukan segalanya selama konstruksi?
Apakah Anda akan menyebutnya seperti ini?
var stuff = DoStuff();
new SaveFileWeirdClass(stuff);
return;
Untuk implementasi yang wajar dari SaveFileWeirdClass, saya berharap tidak ada efek samping dari hanya membuatnya. Membaca file - baik-baik saja. Membuat file? Tidak.
Bagi saya tampaknya lebih jelas seperti ini:
var stuff = new StuffReader(); //Better name needed...
string filePath = this.whatever;
using(Stream stream = new FileStream(filePath))
stuff.Save(stream);