2009-04-27 51 views
6

Điều này liên quan đến SO question khác yêu cầu cách ghi đè tệp hiện có.Tại sao File.Open tốt hơn File.Create để ghi đè lên một tệp hiện có?

Câu trả lời đầu là thế này:

FileStream file = File.Open("text.txt", FileMode.Create); 

câu trả lời của tôi là thế này:

FileStream fs = System.IO.File.Create(fileName); 

Tính đến khi tôi viết câu hỏi này, kiểm đếm là 14-0 nghiêng về Open.

Nếu phiếu là một dấu hiệu tốt so với các giải pháp xấu, điều này làm cho tôi tự hỏi một chút:

Có cái gì tôi đang mất tích trong những phương pháp đó sẽ làm cho nó rõ ràng rằng tốt hơn nhiều để lựa chọn Open trên Create?

Trả lời

6

Với tôi, tôi biết chính xác những gì File.Open("...", FileMode.Create) làm bởi vì tôi có thể di chuột qua FileMode.Create và nó cho tôi biết rằng sẽ tạo một tệp mới mỗi lần. File.Create("...") không có mẹo công cụ như vậy cho biết rằng nó sẽ làm điều này.

+1

Điều đó thực sự khiến tôi cười một chút. Quyết định mã hóa trên chú giải công cụ. Hài hước, nhưng tôi đoán nó tốt như một kẻ phân biệt đối xử như bất cứ điều gì vì nó cung cấp thêm thông tin, điều này rất quan trọng cho sự phát triển. Có vẻ ngẫu nhiên, nhưng thực sự có ý nghĩa. Cảm ơn :) –

0

Vâng, tôi quá đã trả lời với Create nhưng Open thực sự là giải pháp tốt hơn như bạn đang chứng tỏ rằng bạn muốn mở một tập tin và với FileMode.Create bạn cho biết rằng bạn muốn tạo ra các tập tin nếu nó không đã hiện hữu. Tôi nghĩ điều đó khá rõ ràng.

+1

Tôi đoán vậy. Nhưng không phải là tạo ra gọn gàng hơn? Ngoài ra, Open có cờ FileMode.Create, mà tôi nghĩ rằng làm cho nó một chút khó hiểu hơn: "Tôi muốn mở, nhưng Tạo nó." so với "Tôi muốn Tạo, tôi không quan tâm những gì đã có trước đây." Có trường hợp nào (ngoài các ngữ nghĩa) mà Open thực sự sẽ tốt hơn? I E. Create sẽ có một số tác dụng phụ khác mà Open không? –

0

Trước tiên, tôi nghĩ bạn có thể đang đọc quá nhiều vào đó. Tôi, ví dụ, tôi có khuynh hướng bỏ phiếu cho câu trả lời chính xác đầu tiên, và bỏ bê bất kỳ câu trả lời nào khác ... vì vậy việc đầu tiên giúp đỡ một chút.

Thứ hai, File.Open đọc tốt hơn System.IO.File.Open, mặc dù chúng giống nhau.

Thứ ba, Tạo không liên quan đến ngữ nghĩa như Mở, từ quan điểm dễ đọc. Nếu bạn muốn tạo và mở một tệp, tệp đầu tiên rõ ràng hơn.

+0

Có lẽ tôi đang đọc quá nhiều vào nó. Tôi biết rằng khi tôi gõ xong câu trả lời, có lẽ ai đó đã "đánh bại" tôi với câu trả lời đầu tiên. Điều gì làm tôi ngạc nhiên là những câu hỏi "khó khăn hơn" hoặc "thú vị" khác có thể không nhận được nhiều như vậy trong việc bỏ phiếu như câu hỏi đó. Đó là một câu hỏi dễ dàng, vì vậy tôi thường sẽ không thấy bỏ phiếu cao cho một cái gì đó mà mất 2 giây trên google hoặc msdn để trả lời. Tôi đoán từ ngữ rõ ràng của "Mở" cho một ngữ nghĩa tốt hơn một chút so với "Tạo". –

+2

@Brian: Đơn giản chỉ cần bỏ phiếu cho câu trả lời đầu tiên bởi vì đó là câu trả lời đầu tiên là tổng số vô nghĩa. Câu trả lời hay nên được bỏ phiếu, không phải là câu trả lời đầu tiên. –

+0

@divo: Tôi không thể đồng ý hơn.Nó được gọi là lười biếng. Chỉ trung thực thôi. Tôi nghĩ rằng nó xảy ra tất cả các thời gian, mặc dù :) –

2

Có chỉ có một nơi tôi biết bạn có thể tìm kiếm một câu trả lời cho cái này: Reflector

Và nó quay ra cả hai cuộc gọi new FileStream(... với một bộ đầy đủ các lý lẽ!

+0

Vâng, đó là chính xác những gì tôi đang nói. Cả hai đều gọi cùng một mã. Tôi đoán đó là vấn đề mọi người thích 'Mở' qua 'Tạo' vì nó làm cho nó rõ ràng hơn một chút là bạn đang lấy lại một tệp đang mở và sẵn sàng để đi. –

Các vấn đề liên quan