我有一个问题,我无法读取包含外来字符的文件.据我所知,该文件采用UTF-8格式编码.
这是我的代码的核心:
using (FileStream fileStream = fileInfo.OpenRead())
{
using (StreamReader reader = new StreamReader(fileStream, System.Text.Encoding.UTF8))
{
string line;
while (!string.IsNullOrEmpty(line = reader.ReadLine()))
{
hashSet.Add(line);
}
}
}
Run Code Online (Sandbox Code Playgroud)
该文件包含单词"achôcre",但在调试期间检查时,它将其添加为"ach cre".
(这是一个亵渎文件,所以如果你说法语我会道歉.我一个人,不知道这意味着什么)
我正在尝试从我的网络服务器检索上传的文件.当客户端通过webform(随机文件)发送文件时,我需要解析请求以获取文件并进一步处理.基本上,代码如下:
HttpListenerContext context = listener.GetContext();
HttpListenerRequest request = context.Request;
StreamReader r = new StreamReader(request.InputStream, System.Text.Encoding.Default);
// this is the retrieved file from streamreader
string file = null;
while ((line = r.ReadLine()) != null){
// i read the stream till i retrieve the filename
// get the file data out and break the loop
}
// A byststream is created by converting the string,
Byte[] bytes = request.ContentEncoding.GetBytes(file);
MemoryStream mstream = new MemoryStream(bytes);
// do the rest
Run Code Online (Sandbox Code Playgroud)
因此,我能够检索文本文件,但对于所有其他文件,它们都已损坏.有人能告诉我如何正确解析这些HttplistnerRequests(或提供轻量级替代)?
我是C#的初学者,我有一个文件夹,我正在从中读取文件.
我想读取位于解决方案文件的父文件夹中的文件.我该怎么做呢?
string path = "";
StreamReader sr = new StreamReader(path);
Run Code Online (Sandbox Code Playgroud)
所以如果我的文件XXX.sln在C:\X0\A\XXX\那里,那么读取.txt文件C:\X0\A\.
这一直困扰着我.我知道Stream是一个抽象类,因此无法实例化,但它具有从中派生的类.为什么有StreamReader类和Stream.Read()方法(反之为StreamWriter和Stream.Write())?您可以使用300万种不同的方法写入文本文件,并且试图让我了解System.IO命名空间中的所有这些不同类型和方法是相当令人沮丧的.我找到了关于作者和读者对象或派生的流对象本身之间的差异的问题和答案,但没有关于这个特定情况的问题.
我需要从开始到结束两次读取一个流.
但是以下代码抛出ObjectDisposedException: Cannot access a closed file异常.
string fileToReadPath = @"<path here>";
using (FileStream fs = new FileStream(fileToReadPath, FileMode.Open))
{
using (StreamReader reader = new StreamReader(fs))
{
string text = reader.ReadToEnd();
Console.WriteLine(text);
}
fs.Seek(0, SeekOrigin.Begin); // ObjectDisposedException thrown.
using (StreamReader reader = new StreamReader(fs))
{
string text = reader.ReadToEnd();
Console.WriteLine(text);
}
}
Run Code Online (Sandbox Code Playgroud)
为什么会这样?什么是真的处置?为什么操纵StreamReader会以这种方式影响相关的流?期望可以多次读取可搜索流是不合逻辑的,包括几个StreamReaders?
我从使用StreamReader的Web服务器得到响应...现在我想解析这个响应(它是一个XML文档文件)来获取它的值,但每次我尝试这样做时都会收到一个错误:缺少根元素.
如果我直接读取相同的XML文件,文件格式正确,我可以读取它.
这是流:
WebResponse response = webRequest.GetResponse();
Stream responseStream = response.GetResponseStream();
StreamReader responseReader = new StreamReader(responseStream);
string responseString = responseReader.ReadToEnd();
Run Code Online (Sandbox Code Playgroud)
这就是我尝试读取XML文件的方式:
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(responseReader);
XmlNodeList address = xmlDoc.GetElementsByTagName("original");
Run Code Online (Sandbox Code Playgroud) 我正在编写一个程序,需要.exe从网站下载文件,然后将其保存到硬盘驱动器.将.exe存储在我的网站,它的网址如下(这不是真正的URI只是一个我提出了对这个问题的目的):
http://www.mysite.com/calc.exe
Run Code Online (Sandbox Code Playgroud)
经过许多网络搜索和摸索示例之后,到目前为止,我已经提出了代码:
HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(http://www.mysite.com/calc.exe);
HttpWebResponse webResponse = (HttpWebResponse)webRequest.GetResponse();
Stream responseStream = webResponse.GetResponseStream();
StreamReader streamReader = new StreamReader(responseStream);
string s = streamReader.ReadToEnd();
Run Code Online (Sandbox Code Playgroud)
如您所见,我正在使用StreamReader该类来读取数据.调用之后ReadToEnd,流阅读器是否包含我的.exe的(二进制)内容?我可以只将文件的内容写入StreamReader文件(名为calc.exe),我会成功下载.exe吗?
我想知道为什么StreamReader ReadToEnd返回一个字符串.在我的情况下,这个字符串是否是calc.exe的二进制内容?
我想通过块读取非常大的文件(4GBish)块.
我目前正在尝试使用a StreamReader和Read()read方法.语法是:
sr.Read(char[] buffer, int index, int count)
Run Code Online (Sandbox Code Playgroud)
因为索引是一个int它会在我的情况下溢出.我应该用什么呢?
让我说我有一个文件,想要阅读这些行,它是:
while( !streamReader.EndOfStream ) {
var line = streamReader.ReadLine( );
}
Run Code Online (Sandbox Code Playgroud)
我如何只读取一系列行?像只有10到20的读数线.
我想在MemoryStream中打开一个XML文件(来自zip存档),并在此流中创建一个StreamReader,将其放入GridView中.
我用这个代码:
MemoryStream ms = new MemoryStream();
entry.Extract(ms);
StreamReader reader = new StreamReader(ms);
DataSet ds = new DataSet();
ds.ReadXml(reader);
dataGridView1.DataSource = GlobalDs.Tables[0];
Run Code Online (Sandbox Code Playgroud)
如果我的XML文件是用ANSI编码的,那么它可以很好地工作.但是当我加载以UTF8编码的文件时,它会失败,即使我初始化StreamReader如下:
StreamReader reader = new StreamReader(ms, System.Text.Encoding.UTF8);
Run Code Online (Sandbox Code Playgroud)
我希望有人有想法解决我的问题.
c# ×10
streamreader ×10
stream ×3
io ×2
.net ×1
file ×1
httplistener ×1
idisposable ×1
memorystream ×1
parsing ×1
path ×1
streamwriter ×1
unicode ×1
xml ×1