2016-07-12 23 views
-1

如何在構造函數中未指定其他參數而不是源FileStream中的參數的情況下創建新實例FileStream。我該怎麼做?如何從FileStream創建實例FileStream?

FileStream fs= new FileStream([any parametrs]); 

FileStream copy1= new FileStream(parametrs from fs); // First variant 
FileStream copy2= new FileStream(fs); // Or second variant 

例如,我創建FILESTREAM

FileStream fs = new FileStream(_fileName, FileMode.Open, FileAccess.Read, FileShare.Read, 4 * 1024, true) 

現在,我想了很多,從它獨立的副本,但fs不保存從構造函數收到任何parametrs。

+2

什麼是你真正想達到什麼目的?這個問題並不明顯。 –

+0

我想從FileStream創建大量的克隆。但是FileStream沒有構造器拷貝。 – askeet

+1

也許你可以詳細說明你正在嘗試解決的問題,因爲克隆文件流很多聽起來像是非常糟糕的做法。 – Mixxiphoid

回答

0

解決這樣

class FileStreamExt : FileStream 
{ 

    private string _fileName; 
    private FileMode _mode; 

    public FileStreamExt Clone() 
    { 
     return new FileStreamExt(_fileName, _mode); 
    } 

    public FileStreamExt(string filename, FileMode mode) 
     : base(filename, mode) 
    { 
     _fileName = filename; 
     _mode = mode; 
    } 
} 

    FileStreamExt fs = FileStreamExt(_fileName,FileAccess.Read); 
    FileStreamExt copy = fs.Clone(); 
+0

歡迎來到間歇性文件鎖定異常的世界。 – trailmax

+0

爲什麼您認爲來自FileStreamExt的不同克隆具有間歇性文件鎖定異常? – askeet

+0

當你這樣做「克隆」 - 有效地打開文件再次閱讀。理論上'FileAccess.Read'不應該導致鎖,但我已經看到了這個問題的各種問題。給你一個更安全的建議超過 – trailmax

0

什麼是Stream.CopyTo();

FileStream fs= new FileStream([any parametrs]); 
var copy1 = new MemoryStream(); 
fs.CopyTo(copy1) 

它應該工作

+0

我正在使用Framework 3.5。也不確定新實例將從構造函數fs具有相同的參數。 – askeet