草庐IT

C# - 检查文件是否基于文本

如何测试我在C#中使用FileStream打开的文件是否是“文本类型”文件?我希望我的程序能够打开任何基于文本的文件,例如.txt、.html等。但不要打开.doc或.pdf或.exe等文件 最佳答案 总的来说:没法说。如果您使用8位编码打开以UTF-16格式存储的文本文件,它可能看起来像二进制文件。同样,有人可以将文本文件另存为.doc(它是一个文档)。虽然您可以打开文件并查看某些内容,但所有此类试探法有时都会失败(例如,记事本尝试这样做,通过仔细选择几个字符,记事本会猜错并显示完全不同的内容)。如果您有一个特定的场景,而不是能够

c# - DirectoryExists ("c:temp\\foo") 当目录不存在时返回真!

好吧,我被一些看起来有点奇怪的东西咬住了。我意识到我没有正确格式化路径名是我的错误,但我希望以下测试返回false,尤其是因为该文件夹不存在。DirectoryExists("C:temp\\foo")但实际上,即使目录不存在,它也会返回true!代码应该是DirectoryExists("C:\\temp\\foo")有人可以向我解释为什么我从第一个版本中得到误报吗?我希望它可能返回false或抛出异常,但不会返回true。 最佳答案 此API运行正常,但在您第一次遇到此行为时通常会出现错误。省略卷号后的\具有特殊语义。它将用传递

c# - 如何从字符串对象中获取 System.IO.Stream

我有字符串对象。我需要将此数据传递给XYZ类型的另一个对象。但是这个XYZ类型的对象只采用System.IO.Stream。那么如何将字符串数据转换成流,让XYZ类型的对象可以使用这个字符串数据呢? 最佳答案 您必须选择一种文本编码来将字符串转换为字节数组,然后使用MemoryStream调用您的函数。例如:using(System.IO.MemoryStreamms=newSystem.IO.MemoryStream(System.Text.Encoding.UTF16.GetBytes(yourString))){XYZ(ms)

c# - 自定义工具错误 : Failed to generate file

我正在开发一个在VS2012(Framework4.5)windows窗体中创建的windows应用程序(C#)。要求要求它用于旧版本的Windows,因此我将目标框架设置为.NETFramework4并将平台目标设置为x86。一旦完成并尝试编译,我会收到以下错误:Customtoolerror:Failedtogeneratefile:Theservicereferenceisnotvalidforthecurrent.NETFrameworkversionorprojecttype.Youcanchangetheservicereferenceconfigurationinthe.

c# - 如何在没有 CRLF 的情况下在 C# 中 WriteAllLines

我正在使用C#并尝试将几行输出到ASCII文件。我遇到的问题是我的Linux主机将这些文件视为:ASCIItext,withCRLFlineterminators我需要这个文件是:ASCIItextCRLF导致了一些问题,我希望C#中有一种方法可以按照我想要的方式创建格式的文件。我主要使用这段代码:string[]lines={"Line1","Line2"};File.WriteAllLines(myOutputFile,lines,System.Text.Encoding.UTF8);有没有简单的方法来创建没有CRLF行终止符的文件?我可能可以在Linux端处理它,但宁愿从一开始就

C#:将一个文本文件的*内容*附加到另一个文本文件

可能没有其他方法可以做到这一点,但是有没有办法将一个文本文件的内容附加到另一个文本文件中,同时在移动后清除第一个文本文件?我知道的唯一方法是只使用读写器,这对于大文件来说似乎效率低下......谢谢! 最佳答案 不,我认为没有任何东西可以做到这一点。如果这两个文件使用相同的编码并且你不需要验证它们是否有效,你可以将它们视为二进制文件,例如using(Streaminput=File.OpenRead("file1.txt"))using(Streamoutput=newFileStream("file2.txt",FileMode.

c# - Xamarin.iOS 中的 NSTimer 与 Timer - 何时使用什么?

在使用原生NSTimer还是使用.NET替代品时是否有规则?System.Windows.Forms.TimerSystem.Timers.TimerSystem.Threading.Timer 最佳答案 如果您的目标是可移植性,我会使用.NET计时器(见下文),除非您别无选择(例如方法的NSTimer参数)调用)。很遗憾,您的问题中没有列出我一直以来最喜欢的计时器,它是由Task类提供的:awaitTask.Delay(20);//dosomethingafterthedelay使用非常简单。因此,代替此Timer代码:voidf

c# - StreamReader 和寻求

能否使用StreamReader读取普通文本文件,然后在读取过程中保存当前位置后关闭StreamReader,然后打开StreamReader并从那个位置开始阅读?如果不是,我还可以使用什么来完成相同的情况而不锁定文件?我试过了,但没用:varfs=File.Open(@"C:\testfile.txt",FileMode.Open,FileAccess.Read);varsr=newStreamReader(fs);Debug.WriteLine(sr.ReadLine());//Prints:firstlinevarpos=fs.Position;while(!sr.EndOfSt

c# - 使用 System.IO.Packaging 生成 ZIP 文件

我知道通常建议使用DotNetZip或SharpZipLib库之类的库来使用.net语言(在我的例子中是C#)创建ZIP文件,但使用System并非不可能.IO.Packaging生成ZIP文件。我认为尝试在C#中开发一个例程可能会很好,它可以做到这一点,而无需下载任何外部库。有没有人有一个或多个使用System.IO.Packaging生成ZIP文件的方法的好例子? 最佳答案 让我为你谷歌这个->system.io.packaging+generate+zip第一个链接http://weblogs.asp.net/jongallo

c# - 无法连接到 FTP : (553) File name not allowed

我需要通过FTP将文件传输到目录。在.Net中,我必须使用目标文件夹中的文件来创建连接,因此我使用FTP手动将Blank.dat放在服务器上。我检查了访问权限(ls-l),它是-rw-r--r--。但是当我尝试连接到FTP文件夹时,我得到:“远程服务器返回错误:(553)文件名不允许”从服务器返回。我所做的研究表明,这可能是由权限问题引起的,但正如我所说,我有权查看该文件并且可以从该文件夹运行ls。还有哪些其他原因可能会导致此问题?是否有一种无需指定文件即可连接到文件夹的方法?byte[]buffer;StreamreqStream;FileStreamstream;FtpWebRes