C#中等价的FILE声明

3

可能是重复问题:
c#改变文件扩展名

以下代码是用c++编写的,如何在c#中表示?

FILE fp = fopen(ChangeFileExt(Application.ExeName, ".DAT").c_str(), "w");

与此主题相关的另一个问题是:

C#中对以下内容的等效处理:

fputs((thisstring.CommaText + "\n").c_str(), fp); 

1
我怀疑他感兴趣的不是文件扩展名的更改。请阅读帖子的标题... - Patrik Svensson
你想要写文本(fprintf)还是二进制数据?在.NET中这是分开的。 - H H
如果您有任何问题 - 除了第一个问题之外 - 请将其发布为新问题。 =) - J. Steen
这个字符串是一个变量。 - Camren Chetty
fputs是基于文本的,使用StreamWriter。 - H H
3个回答

9

如何:

FileStream fs = File.OpenWrite(Path.ChangeExtension(Application.ExeName, "DAT"));

谢谢 Justin,正是我在寻找的东西 :-) - Camren Chetty
谢谢大家,现在它正常工作了...与同一主题相关的另一个问题是以下内容在C#中的等效方式:fputs((thisstring.CommaText + "\n").c_str(), fp); - Camren Chetty
请单独提出这个问题以获得更清晰的解答。 - Justin Harvey

4

您可以基于EXE名称打开(创建)一个FileStream:

FileStream fs = File.Create(
        Path.ChangeExtension(Application.ExeName, "dat"));

或者说一个TextWriter更接近于C/C++的FILE

StreamWriter writer = File.CreateText(
        Path.ChangeExtension(Application.ExeName, "dat"));

但请注意,普通用户不允许将文件写入ProgramFiles文件夹。


+1 是指注意默认访问控制。 - Richard

1
还没有编译它,但这可能会给你一个想法。
string appName = Assembly.GetExecutingAssembly().Location;
FileStream s = File.Open(Path.ChangeExtension(appName , ".DAT"), FileMode.OpenOrCreate);

谢谢大家,现在它可以工作了...我使用了Justin发布的代码。关于同一主题的另一个问题是以下内容在C#中的等效方式:fputs((thisstring.CommaText + "\n").c_str(), fp);谢谢Camren - Camren Chetty
var writer = new System.IO.StreamWriter("c:\filepath\file.txt"); writer.Write("这是一个没有换行符的字符串。"); writer.WriteLine("这是文件中的一行。"); - Patrik Svensson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接