C# 用FileStream读取写入大文件

我想做个上传文件的功能,但是大文件会报错,有什么办法:比如分段读取 写入,,,,,,,
代码应该怎么样写?

4个回答

   private void button1_Click(object sender, EventArgs e)
    {
        const long ChunkSize = 102400;//100K 每次读取文件,只读取100K 
        using (OpenFileDialog fbd = new OpenFileDialog())
        {
            fbd.Filter = "(*.*)|*.txt";
            if (fbd.ShowDialog(this) == DialogResult.OK)
            {
                byte[] bytcontent = new byte[ChunkSize];
                FileStream fs = new FileStream(fbd.FileName,FileMode.Open);
                long dataLengthToRead = fs.Length;//获取下载的文件总大小

               while (dataLengthToRead > 0)
               {     
                    int lengthRead = fs.Read(bytcontent, 0, Convert.ToInt32(ChunkSize));//读取的大小
                    Thread t = new Thread(new ParameterizedThreadStart(Readfile));
                    t.Start(System.Text.Encoding.Default.GetString(bytcontent));
                    dataLengthToRead -= lengthRead;
                }
            }
        }}

public delegate void Callback(string str);

    private void Readfile(object content)
    {
        if (richTextBox1.InvokeRequired)
        {
            Callback call = new Callback(Readfile);
            this.BeginInvoke(call, new object[] { content });
        }
        else
        {
            this.richTextBox1.AppendText(content.ToString());
            this.richTextBox1.AppendText("\r\n");
        }
    }

            4G以下的文件都可以
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
c#FileStream复制多媒体文件被拒绝访问

using (FileStream fsWrite = new FileStream(targe这句话报错t,FileMode.OpenOrCreate,FileAccess.Write)) 错误是:对路径“C:\Users\kaka\Desktop”的访问被拒绝。 有权限我能手动删除这个多媒体文件, 请帮忙看下是不是代码问题,代码如下: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; namespace FileStream多媒体文件复制 { class Program { static void Main(string[] args) { //文件复制过程:先将要复制的多媒体文件读取出来 //然后再写入到指定的位置 string source = @"F:\音标\謝孟媛英语音标发音01_标清.flv"; //string source = @"C:\Users\kaka\Desktop\网站.txt"; string target = @"C:\Users\kaka\Desktop"; CopyFile(source, target); Console.WriteLine("复制成功"); } public static void CopyFile(string source, string target) { //创建一个读取的流 using(FileStream fsRead = new FileStream(source,FileMode.Open,FileAccess.Read)) { //创建一个写入的流 using (FileStream fsWrite = new FileStream(target,FileMode.OpenOrCreate,FileAccess.Write)) { byte[] buffer = new byte[1024 * 1024 * 5]; //因为文件可能比较大,所以我们通过循环去读取 while (true) { //返回本次读取实际的字节数 int r = fsRead.Read(buffer, 0, buffer.Length); //如果r = 0 时候,就证明什么都读取不到,已经读取完了 if (r == 0) { break; } //因为r是实际读取到的,所以写入时候用r fsWrite.Write(buffer, 0, r); } } } } } }

C# 用FileStream.WriteAsync 异步读文件 调用线程还是被阻塞了。

在用FileStream WriteAsync方法(BeginWrite方法也是一样)的异步写文件时、 如下代码。实际上调用这段代码的时候,还是被阻塞了。 ``` FileStream stream = new FileStream("in.txt", FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite, 1024, FileOptions.Asynchronous); byte[] byteData = new byte[80961024 * 4]; Task task = stream.WriteAsync(byteData, 0, byteData.Length); ``` 如果把这个FileStream绑定到一个StreamWriter上,用StreamWriter的WriteAsync方法倒是能异步,不会阻塞。 ``` FileStream stream = new FileStream("in.txt", FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite, 1024, FileOptions.Asynchronous); char[] byteData = new char[80961024 * 4]; var sw = new StreamWriter(stream); Task task = sw.WriteAsync(byteData, 0, byteData.Length); ``` 求大神解惑

c#用StreamWriter写入文本文件的问题

我没有创建FileStream对象,直接就用StreamWriter创建对象,然后将内容写入文本文件,但是我发现没有将文本文件原本的内容清空, 于是现在文本文件的内容就有很大错误了,那么我想问怎样只用StreamWriter对象来清空文本文件的内容?还有,我查了一下,网上有不少地方说清空文本文件内容都是创建一个FileStream对象,用Create方式打开文件,然后再用StreamWriter对象写入文件,这样原本的问题确实是解决了,但是当我在程序里读取修改后的文本文件的内容时,读出来的文件的内容是乱码(虽然我直接打开该文本文件内容没有错),所以请问这是怎么回事?这个问题又怎么解决呢?我在写的是一个简易记事本程序,求大神不吝赐教

怎么把FileStream读取的流,赋值给Stream

最近在做亚马逊的接口对接 亚马逊上传数据有个参数request.FeedContent,这个需要Stream 但是用FileStream读取得到的流直接赋值给Stream报错 代码如下 FileStream s = File.Open(path, FileMode.Open, FileAccess.Read); request.FeedContent = s; 会出现异常 request.FeedContent.ReadTimeout”引发了“System.InvalidOperationException”类型的异常 “request.FeedContent.WriteTimeout”引发了“System.InvalidOperationException”类型的异常

wince下,使用C# ,把数据写入txt文件中

各位高手大家好,我在wince下,使用C# ,把数据写入txt文件中,所有的代码都执行完成,也没有发生任何错误,但是我打开txt里面是空白的,没有任何数据,不知其解,望高手不吝指教,谢谢。写入txt的代码如下: FileStream fs = null; StreamWriter sw = null; try { fs = new FileStream(fileName, FileMode.Append, FileAccess.Write); sw = new StreamWriter(fs); sw.WriteLine(“aaaaaaaaaaaaaaa”); } catch (Exception ex) { throw ex; } finally { if (sw != null) sw.Close(); if (fs != null) fs.Close(); } 以上代码执行没有任何错误,但是就是数据不能写到txt里面,郁闷。。

C#中用filestream新建了一个jpg后dispose,然后用bitmap打不开了

对于其他的jpg我用bitmap可以正常打开 对于我用filestream新建后又写入了数据的jpg(之后用可以在电脑文件管理器中看到并打开查看,是正确的jpg文件),然而随后我调用了dispose,因为我想再用bitmap直接打开这个文件,然而失败了。并没有报错,只是异步调用的函数一致卡在new Bitmap(filepath)这一句上。。。 求解。 在做一个C#的网络文件传输,客户端发给服务器再由服务器发送给所有在线的客户端。 贴代码 ``` /// <summary> /// 收到图片信息 /// </summary> /// <param name="imageMsg">图片消息</param> public void ReceiveImageMessage( ImageMessage imageMsg ) { MessageDelegate imageDel = new MessageDelegate(DealImageMessage); imageDel.BeginInvoke( imageMsg , null , null ); } private void DealImageMessage( Message msg ) {//中间一大段可以不用看。文件传输没问题。 ImageMessage imageMsg = msg as ImageMessage; string ip = imageMsg.Ip; int port = imageMsg.Port; //获取客户端ip和port string filename = string.Format("{0}{1}{2}{3}{4}{5}{6}",DateTime.Now.Year,DateTime.Now.Month,DateTime.Now.Day,DateTime.Now.Hour,DateTime.Now.Minute,DateTime.Now.Second, Path.GetExtension(imageMsg.ImageName)); string username = imageMsg.UserName; IPEndPoint end = new IPEndPoint(IPAddress.Parse(ip),port); TcpClient imageClient = new TcpClient(); imageClient.Connect( end ); //connect向客户端 NetworkStream streamToClient = imageClient.GetStream(); int BufferSize = 1024; byte[] buffer = new byte[BufferSize]; FileStream outputToImage = new FileStream("../BQTemp/"+filename,FileMode.CreateNew,FileAccess.Write); int bytesread = 0; int totalbytes = 0; do { bytesread = streamToClient.Read( buffer , 0 , BufferSize ); totalbytes += bytesread; outputToImage.Write( buffer , 0 , bytesread ); } while(bytesread > 0); //读取文件 streamToClient.Dispose(); outputToImage.Dispose(); imageClient.Close(); //关闭 BroadImage( username , filename ); //广播图片 } ``` 然后在BroadImage( username , filename );调用了下面这个函数 ``` /// <summary> /// 打印图片 /// </summary> /// <param name="imageMsg"></param> public void ShowImage( ImageMessage imageMsg ) { string imageName = imageMsg.ImageName; chatBox.AppendText( imageMsg.UserName + ":\n" ); Clipboard.Clear(); Bitmap bmp = new Bitmap("../Temp/"+imageName);//嗯没错是这一句卡住了 Clipboard.SetImage( bmp ); chatBox.Paste(); Clipboard.Clear(); chatBox.AppendText( "\n" ); } ```

c#读取txt的文件(求优化,读取不了60k以上的txt文件)

byte[] byData = new byte[100]; char[] charData = new char[1000]; public void Read() { try { FileStream file = new FileStream("E:\\test.txt", FileMode.Open); file.Seek(0, SeekOrigin.Begin); file.Read(byData, 0, 100); //byData传进来的字节数组,用以接受FileStream对象中的数据,第2个参数是字节数组中开始写入数据的位置,它通常是0,表示从数组的开端文件中向数组写数据,最后一个参数规定从文件读多少字符. Decoder d = Encoding.Default.GetDecoder(); d.GetChars(byData, 0, byData.Length, charData, 0); Console.WriteLine(charData); file.Close(); } catch (IOException e) { Console.WriteLine(e.ToString()); } } 复制代码   (2).使用StreamReader读取文件,然后一行一行的输出。 复制代码 public void Read(string path) { StreamReader sr = new StreamReader(path,Encoding.Default); String line; while ((line = sr.ReadLine()) != null) { Console.WriteLine(line.ToString()); } } 复制代码 3.文件的写入   (1).使用FileStream类创建文件,然后将数据写入到文件里。 复制代码 public void Write() { FileStream fs = new FileStream("E:\\ak.txt", FileMode.Create); //获得字节数组 byte[] data = System.Text.Encoding.Default.GetBytes("Hello World!"); //开始写入 fs.Write(data, 0, data.Length); //清空缓冲区、关闭流 fs.Flush(); fs.Close(); } 复制代码   (2).使用FileStream类创建文件,使用StreamWriter类,将数据写入到文件。 复制代码 public void Write(string path) { FileStream fs = new FileStream(path, FileMode.Create); StreamWriter sw = new StreamWriter(fs); //开始写入 sw.Write("Hello World!!!!"); //清空缓冲区 sw.Flush(); //关闭流 sw.Close(); fs.Close();

c#FileStream复制视频文件问题

文件不是只读的,我能手动删除,但运行出错说没有权限,请教各位哪里出了问题 代码如下![图片说明](https://img-ask.csdn.net/upload/201703/30/1490860658_832271.jpg) static void Main(string[] args) { //文件复制过程:先将要复制的多媒体文件读取出来 //然后再写入到指定的位置 string source = @"F:\音标\謝孟媛英语音标发音01_标清.flv"; //string source = @"C:\Users\kaka\Desktop\网站.txt"; string target = @"C:\Users\kaka\Desktop"; CopyFile(source, target); Console.WriteLine("复制成功"); } public static void CopyFile(string source, string target) { //创建一个读取的流 using(FileStream fsRead = new FileStream(source,FileMode.Open,FileAccess.Read)) { //创建一个写入的流 using (FileStream fsWrite = new FileStream(target, FileMode.OpenOrCreate, FileAccess.Write)) { byte[] buffer = new byte[1024 * 1024 * 5]; //因为文件可能比较大,所以我们通过循环去读取 while (true) { //返回本次读取实际的字节数 int r = fsRead.Read(buffer, 0, buffer.Length); //如果r = 0 时候,就证明什么都读取不到,已经读取完了 if (r == 0) { break; } //因为r是实际读取到的,所以写入时候用r fsWrite.Write(buffer, 0, r); } } } }

c#中读取十六进制文件的问题

小弟刚接触C#,作业上有个这样的问题,需要编一个程序: 读取一个dat格式的文件,打开以后是一组16进制的数,需要每次读取20字节进行分析。 我想要实现的是每次读取20字节写入byte数组进行分析,分析好了以后再清空byte数组,读下面20字节,如此循环。 请问各位大神该如何实现?

C# 读取文件后删除提示被占用但是我已经释放了资源啊?

DirectoryInfo dir = new DirectoryInfo(@"FingerImage"); try { foreach (FileInfo fileInfo in dir.GetFiles("*.bmp")) { MessageBox.Show(fileInfo.Name,"INFO"); byte[] nameTemp = Encoding.Default.GetBytes(Path.GetFileName(fileInfo.FullName)); byte[] recvBuf = new byte[32]; using (FileStream picture = fileInfo.OpenRead()) { byte[] picsize = new byte[fileInfo.Length + 4096]; picture.Read(picsize, 0, picsize.Length - 1); picture.Dispose(); picture.Close(); GC.ReRegisterForFinalize(picture); GC.ReRegisterForFinalize(fileInfo); string nameStr = "IMAGE<#>" + Encoding.UTF8.GetString(nameTemp).Length + "<#>" + Encoding.UTF8.GetString(nameTemp) + "<#>" + picsize.Length + "<#>|END|"; byte[] name = Encoding.UTF8.GetBytes(nameStr); //发送图片名 sockClient.Send(name); //接受反馈 int iRet = sockClient.Receive(recvBuf); if (iRet == 0) { MessageBox.Show("服务器异常", "提示:"); flag = false; } else { if (String.Compare(Encoding.Default.GetString(recvBuf), "YES") == 0) { sockClient.Send(picsize); //发送图片 iRet = sockClient.Receive(recvBuf); if (iRet == 0) { MessageBox.Show("服务器异常", "提示:"); flag = false; } else { if (String.Compare(Encoding.Default.GetString(recvBuf), "YES") == 0) { MessageBox.Show("上传成功", "提示:"); } else { lab_msg.Text = Encoding.Default.GetString(recvBuf); flag = false; } } } else { MessageBox.Show(Encoding.Default.GetString(recvBuf), "提示:"); flag = false; } } } //if (File.Exists(fileInfo.FullName)) //{ // File.Delete(fileInfo.FullName); //}提示被占用 //FileStream picture = new FileStream(fileInfo.FullName, FileMode.Open, FileAccess.Read); } Directory.Delete(dir.FullName,true);//可以删除,但是最后一张提示被占用,无法删除 } catch (Exception e) { MessageBox.Show(this, e.Message, "客户端异常"); } ``` ```

C#多线程读同一文件,写多个文件并更新进度条

代码的目的是启动3个task,通过调用C DLL中getSWMMout方法读取同一二级制文件中不同部分,写3个文件,NdeExtract和LinkExtract方法和SubExtract方法代码结构一致。 当多个checkBox都选中时,报错代码:托管调试助手 "FatalExecutionEngineError":“运行时遇到了错误。此错误的地址为 0x6cb8f121,在线程 0x3f58 上。错误代码为 0xc0000005。此错误可能是 CLR 中的 bug,或者是用户代码的不安全部分或不可验证部分中的 bug。此 bug 的常见来源包括用户对 COM-interop 或 PInvoke 的封送处理错误,这些错误可能会损坏堆栈。”。请问怎么解决呢?在博客园提过同样的问题,但回答不太明白,如果3个task顺序执行应该怎么修改呢? 代码如下: ``` // Extract subcatch output values if checked if (chkSub.IsChecked == true) { progressBar1.Value = 0; // define file path for subcatchment extraction string subcatchOutPath = "subcatch.txt"; // instaniate a task for extraction var subTask = SubExtract(subcatchOutPath); } // Extract node output values if checked if (chkNode.IsChecked == true) { progressBar2.Value = 0; // define file path for node extraction string nodeOutPath = "node.txt"; // instaniate a task for extraction var nodeTask = NodeExtract(nodeOutPath); } // Extract linke output values if checked if (chkLink.IsChecked == true) { progressBar3.Value = 0; // define file path for link extraction string linkOutPath = "link.txt"; // instaniate a task for extraction var linkTask = LinkExtract(linkOutPath); } async Task SubExtract(string outPathSub) // // Purpose: extract variable outcome for subcatchment // { int errSubID; int cntSub = 0; int sumSubPrd = Nsubcatch * extNperiod; // total for subcatchment outcome float subValue = 0F; // outcome value for subcatchment extraction // create file stream for writing file FileStream fsSubcatch = new FileStream(outPathSub, FileMode.Create); StreamWriter swSubcatch = new StreamWriter(fsSubcatch); await Task.Run(() => { for (int i = 0; i < Nsubcatch; ++i) { for (int j = 1; j <= extNperiod; ++j) { for (int k = 0; k < NsubcatchVar; ++k) { // getSWMMout为C DLL中方法 errSubcatch = getSWMMresult(SUBCATCH, i, k, j, ref subValue); } // update progressbar and textBlock value cntSub++; progressBar1.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Normal, (Action)delegate () { progressBar1.Value = cntSub * 100 / sumSubPrd; }); } } // empty buffer swSubcatch.Flush(); // close stream swSubcatch.Close(); fsSubcatch.Close(); GC.Collect(); }); } ```

C#中将double值变成二进制然后写入文件,Java中载入该文件读取此二进制double值时不正确

目前已定位到是因为C#中的byte范围是0到255,而java中byte值为-128到127导致的错误。 尝试过使用C#的sbyte来解决: bw1 = new BinaryWriter(new FileStream("C:\\Users\\DELL\\Desktop\\SpatialIndex\\ctest1.bin", FileMode.Create)); bw2 = new BinaryWriter(new FileStream("C:\\Users\\DELL\\Desktop\\SpatialIndex\\ctest2.bin", FileMode.Create)); byte[] bits=BitConverter.GetBytes(501751.060001268);//测试数据 sbyte[] bitsb = new sbyte[8]; for (int i = 0; i < bits.Length; i++) { byte abyte = bits[i]; if (abyte > 127) { bitsb[i] = (sbyte)(abyte - 256); } else { bitsb[i] = (sbyte)abyte; } bw1.Write(bitsb[i]); bw2.Write(bits[i]); } 但是写入后对比,两个文件中的内容还是一样,并没有生成为java二进制格式。 不知道有哪位高人也遇到并解决过类似问题。

C#使用NPOI读写Excel文件,可以做去重复处理嘛

使用NPOI读取excel文件将数据处理,重新写入另一路径下得excel文件 在有数据是重复的基本上就是1,1,1,1,3,2,2,2,4这种如何,处理为1,3,2,4这种。

C#中Parallel.For并行处理中读取文件时出现的错误

1、读取“d:/users/v-lingao/from_lei/wordsegmentation/testdata”目录下的所有txt文档,利用Parallel.For并行处理各个txt文档中的内容,每次读取一行存储到string line中,利用line = sr.ReadLine() (StreamReader sr); 没处理一行也入“d:/users/v-lingao/from_lei/wordsegmentation/testdata1”目录下新创建的对应的txt文件中。方法ComputeIDF()实现次功能。 2、读取在“d:/users/v-lingao/from_lei/wordsegmentation/testdata1”目录下创建的txt文件,利用Parallel.For并行处理每个txt文档中的内容,类似于ComputeIDF()方法,利用line = sr.ReadLine().。法ComputingTfIdf()实现此功能。错误也就出现在此方法中,错误提示根据写入文件时编码方式的不同有所改变。 部分代码如下所示: public static Dictionary<string, float> ComputeIDF(List<string> stopWordsList) { DirectoryInfo di = new DirectoryInfo(@"d:/users/v-lingao/from_lei/wordsegmentation/testdata"); FileInfo[] ff = di.GetFiles("*.txt"); Dictionary<string, int> featureDoc = new Dictionary<string, int>(); Parallel.For(0, ff.Length, (part) => { FileInfo file = ff[part]; Dictionary<string, int> featureFile = new Dictionary<string,int>(); string name = file.Name.Substring(file.Name.LastIndexOf("\\") + 1); string path = Path.Combine(@"d:/users/v-lingao/from_lei/wordsegmentation/testdata1", name); FileStream aFile = new FileStream(path, FileMode.Create); StreamWriter sw = new StreamWriter(aFile, Encoding.UTF8); int lineCount = 0; char[] charArray = new char[] { ' ' }; StreamReader sr = new StreamReader(file.OpenRead(),Encoding.UTF8); string line = sr.ReadLine(); while (line != null) { ​ ​ ​ ​ ​ ​//部分代码省略 ​ ​ ​ ​ ​​lineCount++; sw.Write(lineCount); foreach (KeyValuePair<string, int> keyvalue in featureLine) { sw.Write(' ' + keyvalue.Key + ':' + (0.5 + 0.5 * ((float)keyvalue.Value / maxCount))); } sw.WriteLine(); line = sr.ReadLine(); } //combine the featureFiles into featureDoc without repeating featureDoc.Add(featurename, featureFile[featurename]); sr.Close(); sw.Close(); }); Dictionary<string, float> idf = new Dictionary<string, float>(); foreach (KeyValuePair<string, int> keyvalue in featureDoc) { idf.Add(keyvalue.Key, (float)Math.Log10((float)sumLine / (float)keyvalue.Value)); } return idf; } 这个方法没有问题。接下来是ComputingTfIdf(idf),问题出在这个方法中。 public static void ComputingTfIdf(Dictionary<string, float> idf) { DirectoryInfo dir = new DirectoryInfo(@"d:/users/v-lingao/from_lei/wordsegmentation/testdata1"); FileInfo[] ff = dir.GetFiles("*.txt"); StreamReader sr; Parallel.For(0, ff.Length, (part) => { FileInfo file = ff[part]; List<string> idfList = new List<string>(); idfList.AddRange(idf.Keys); int linenum = 0; sr = new StreamReader(file.OpenRead(),Encoding.UTF8); char[] charArray = new char[] { ' ' }; char[] charArray1 = new char[] { ':' }; string name = file.Name.Substring(file.Name.LastIndexOf("\\") + 1); string path = Path.Combine(@"d:/users/v-lingao/from_lei/wordsegmentation/idfdata", name); FileStream aFile = new FileStream(path, FileMode.Create); StreamWriter sw = new StreamWriter(aFile, Encoding.UTF8); ** *string line = sr.ReadLine();* ** //这行有时也会出错 while (line != null) { linenum++; string[] words = line.Split(charArray); int i = 1; foreach (string word in words) { if (i == 1) { sw.Write(word + ' '); i++; } else { string[] wds = word.Split(charArray1); if (wds.Length == 2) { string key = wds[0]; if (idf.Keys.Contains(key)) { double tfidf = (double)idf[key] * (Convert.ToDouble(wds[1])); sw.Write(idfList.IndexOf(key)+ ':'+tfidf +' '); } } } } sw.WriteLine(); ** *line = sr.ReadLine();* ** //问题常常出现在这行 } } sw.Close(); }); } 错误提示根据写入文件时编码方式的不同有所改变。当读取、写入文件用UTF8或者Unicode时,写入和读取的都是乱码,并且line = sr.ReadLine()出错,错误提示为: ** *The output char buffer is too small to contain the decoded characters, encoding 'Unicode (UTF-8)' fallback 'System.Text.DecoderReplacementFallback'* ** 很是无语,功能相同的代码,为什么ComputeIDF()方法中line = sr.ReadLine()就不出错。我将编码换成Encoding.GetEncoding("GBK")读写文件不会出现乱码,但line = sr.ReadLine()还是出错,相当无语! 还有就是当不用并行处理Parallel.For,而是用for循环时也不出错。 求大侠帮忙,不胜感激!

c#中创建文件流抛出异常System.NotSupportedException:“不支持给定路径的格式。”

详情: 抛出异常System.NotSupportedException:“不支持给定路径的格式。”, 抛出异常位置:创建文件流, 运行时fileName的值为:"201829815:14:33591.txt"。 注释掉的代码部分是我尝试的解决办法,但抛出相同异常。 请不吝赐教,谢谢!FileStream的 官方帮助文档[https://docs.microsoft.com/zh-cn/dotnet/api/system.io.filestream?view=netframework-4.7.2](https://docs.microsoft.com/zh-cn/dotnet/api/system.io.filestream?view=netframework-4.7.2 "") ``` //路径定义 /*string currPath = Application.StartupPath;*/ string fileName =/*currPath+*/DateTime.Now.Year.ToString() + DateTime.Now.DayOfYear.ToString() + DateTime.Now.ToLongTimeString() + DateTime.Now.Millisecond.ToString()+".txt"; //创建文件流 FileStream fs = new FileStream(fileName, FileMode.CreateNew); //创建写入器 StreamWriter streamWriter = new StreamWriter(fs); for (int i = 0; i < listBox1.Items.Count; i++) { streamWriter.Write(listBox1.Items[i]); } //关闭写入器 streamWriter.Close(); //关闭文件流 fs.Close(); //显示打印结果 MessageBox.Show("打印成功", "打印结果"); ```

下载APK时,往APK【META-INF】文件夹中写入空文件

因为关键字推广【N万个关键字】,需要当用户在下载页面下载apk时,往apk中写入空文件【以关键字相应规则命名】。待用户使用APK时,读取该文件关联用户,进行数据记录。尝试了很多种办法都无果。跪求帮助啊。进度如下: 1.只能往APK根目录写入空文件,APK文件变小,且损坏APK安装包无法进行安装操作;【ZipArchive archive = new ZipArchive(FileStream, ZipArchiveMode.Update)】 2.先解压再压缩代码操作,解压读取数据时报错。【ZipInputStream zipStream = new ZipInputStream(File.OpenRead(FileStream));】 或者大神们有其他更方便安全的其他方法。求赐教!

NPOI写入大数据到excel中,如何降低使用的内存,解决内存占用过大的问题

SystemManage.q_station_log qStationLogsys = new SystemManage.q_station_log(); //int allcount = qStationLogsys.GetAllCount(); int allcount = 100000; #region string filename = "xxxx.xls"; string path = "/exceldata/" + filename; string FilePathName = HttpContext.Current.Server.MapPath(path); System.IO.File.Delete(FilePathName); FileStream Fs = new FileStream(FilePathName, FileMode.Create); IWorkbook workbook = new HSSFWorkbook(); int sheetindex = 1; ISheet sheet = workbook.CreateSheet("￈xx" + sheetindex.ToString() + ""); int pagesize = 1000; int currentIndex = 1; int sheetcount = 0; #endregion int fornum = (allcount - allcount % pagesize) / pagesize + 1; while (currentIndex <= fornum) { DataSet ds = qStationLogsys.GetAllLogPart(pagesize, currentIndex); if (ds.Tables[0].Rows.Count > 0) { for (int i = 0; i < ds.Tables[0].Rows.Count; i++) { if (sheetcount % 65535 == 0) { if (sheetindex != 1) { workbook.Write(Fs); //workbook.Clear(); Fs.Flush(); Fs.Close(); Fs.Dispose(); Fs = new FileStream(FilePathName, FileMode.Open); sheetcount = 0; sheet = workbook.CreateSheet("￈xxx" + sheetindex.ToString() + ""); } creat_title(sheet);//写入头的内容 sheetcount++; sheetindex++; creat_content(sheet, sheetcount, ds.Tables[0].Rows[i]); //写入内容 } else { creat_content(sheet, sheetcount, ds.Tables[0].Rows[i]); sheetcount++; } } } currentIndex++; ds.Clear(); } workbook.Write(Fs); workbook.Clear(); Fs.Flush(); Fs.Close(); Fs.Dispose(); //------------------------------------------------- 说明:代码如上,实现写入100000条数据,每次从数据库读取1000条,循环写入,当数据超过65535时,会新建一个工作簿。功能已经实现,但是每次写入内容占用过高,有什么方法可以改进,请教下,感激。。。。。

C# 复制文件 抛出异常 不支持给定路径的格式

如题,写了一段复制文件的代码,报“不支持给定路径的格式”的错 ``` try { string sourceDir = string.Format(@"‪D:\inspur\TZGK\Code\Jgjs\JC.Tzgk.Jgjs\JC.Tzgk.Jgjs.Controller\bin\Debug\JC.Tzgk.Jgjs.Controller.dll"); string objDir = string.Format(@"C:\Users\haikea\Desktop\JC.Tzgk.Jgjs.Controller.dll"); File.Copy(sourceDir, objDir, true); } catch(Exception e) { MessageBox.Show(e.Message); } ``` 我把sourceDir的值直接复制到我的电脑打开会报错,但是我先复制到sublinetest3里,再复制到我的电脑就能找到文件,各位大神知道是咋回事吗![图片说明](https://img-ask.csdn.net/upload/201705/09/1494300494_910996.jpg) ![图片说明](https://img-ask.csdn.net/upload/201705/09/1494300509_881494.jpg) ![图片说明](https://img-ask.csdn.net/upload/201705/09/1494300527_456932.jpg)

C#中如何将geometry数据写入SQL Server数据库?

我想通过C#将txt文件里的地理位置信息添加到数据库中,由于数据库里的数据类型是geometry,总是报错。麻烦大神帮我看一下代码哪里有问题? ``` 1;sow;7acre;'POINT(116.360413 40.008438)' 2;sow;3acre;'POINT(116.360413 40.008438)' 3;sow;4acre;'POINT(116.360413 40.008438)' 4;sow;5acre;'POINT(116.360413 40.008438)' ``` 上面是txt文本信息 ``` public void Button1_Click(object sender, EventArgs e) { string path = @"D:\db_example\a.txt"; StreamReader sr = new StreamReader(new FileStream(path, FileMode.Open, FileAccess.Read), System.Text.Encoding.UTF8); SqlConnection con = new SqlConnection("Server=localhost;user id=sa;pwd=liujiang;database=Plan"); string sql = "insert into Plan_info values (@ProjectID,@ProjectType, @TargetDo,geometry::STGeomFromText(@d,4326))"; char delimChar = ';'; string[] split = null; string strTemp = sr.ReadLine(); while (strTemp != null) { split = strTemp.Split(delimChar); SqlCommand cmd = new SqlCommand(sql, con); cmd.Parameters.Add("@ProjectID", SqlDbType.Int).Value = split[0]; cmd.Parameters.Add("@ProjectType", SqlDbType.VarChar).Value = split[1]; cmd.Parameters.Add("@TargetDo", SqlDbType.VarChar).Value = split[2]; //string d = split[3]; cmd.Parameters.Add("@d", SqlDbType.Text).Value = split[3]; cmd.Connection.Open(); try { cmd.ExecuteNonQuery(); } catch (System.Data.SqlClient.SqlException ex) { Console.WriteLine(ex.Message); } con.Close(); strTemp = sr.ReadLine(); } sr.Close(); } ``` ![图片说明](https://img-ask.csdn.net/upload/201904/29/1556527751_545453.png) 这是报错信息 ,上网查了下,是数据类型不匹配的原因,麻烦大神们指点解决方法。

定量遥感中文版 梁顺林著 范闻捷译

这是梁顺林的定量遥感的中文版,由范闻捷等翻译的,是电子版PDF,解决了大家看英文费时费事的问题,希望大家下载看看,一定会有帮助的

Java 最常见的 200+ 面试题:面试必备

这份面试清单是从我 2015 年做了 TeamLeader 之后开始收集的,一方面是给公司招聘用,另一方面是想用它来挖掘在 Java 技术栈中,还有那些知识点是我不知道的,我想找到这些技术盲点,然后修复它,以此来提高自己的技术水平。虽然我是从 2009 年就开始参加编程工作了,但我依旧觉得自己现在要学的东西很多,并且学习这些知识,让我很有成就感和满足感,那所以何乐而不为呢? 说回面试的事,这份面试...

机器学习初学者必会的案例精讲

通过六个实际的编码项目,带领同学入门人工智能。这些项目涉及机器学习(回归,分类,聚类),深度学习(神经网络),底层数学算法,Weka数据挖掘,利用Git开源项目实战等。

远程工具,免费

远程工具,免费

java jdk 8 帮助文档 中文 文档 chm 谷歌翻译

JDK1.8 API 中文谷歌翻译版 java帮助文档 JDK API java 帮助文档 谷歌翻译 JDK1.8 API 中文 谷歌翻译版 java帮助文档 Java最新帮助文档 本帮助文档是使用谷

csma/ca和csma/cd的matlab仿真源代码带有详细的注释

csma/ca和csma/cd的matlab仿真源代码带有详细的注释,载波侦听,随意设置节点数,带有炫酷的图形展示效果。

Java基础知识面试题(2020最新版)

文章目录Java概述何为编程什么是Javajdk1.5之后的三大版本JVM、JRE和JDK的关系什么是跨平台性?原理是什么Java语言有哪些特点什么是字节码?采用字节码的最大好处是什么什么是Java程序的主类?应用程序和小程序的主类有何不同?Java应用程序与小程序之间有那些差别?Java和C++的区别Oracle JDK 和 OpenJDK 的对比基础语法数据类型Java有哪些数据类型switc...

软件测试入门、SQL、性能测试、测试管理工具

软件测试2小时入门,让您快速了解软件测试基本知识,有系统的了解; SQL一小时,让您快速理解和掌握SQL基本语法 jmeter性能测试 ,让您快速了解主流来源性能测试工具jmeter 测试管理工具-禅道,让您快速学会禅道的使用,学会测试项目、用例、缺陷的管理、

pokemmo的资源

pokemmo必须的4个rom 分别为绿宝石 火红 心金 黑白 还有汉化补丁 资源不错哦 记得下载

三个项目玩转深度学习(附1G源码)

从事大数据与人工智能开发与实践约十年,钱老师亲自见证了大数据行业的发展与人工智能的从冷到热。事实证明,计算机技术的发展,算力突破,海量数据,机器人技术等,开启了第四次工业革命的序章。深度学习图像分类一直是人工智能的经典任务,是智慧零售、安防、无人驾驶等机器视觉应用领域的核心技术之一,掌握图像分类技术是机器视觉学习的重中之重。针对现有线上学习的特点与实际需求,我们开发了人工智能案例实战系列课程。打造:以项目案例实践为驱动的课程学习方式,覆盖了智能零售,智慧交通等常见领域,通过基础学习、项目案例实践、社群答疑,三维立体的方式,打造最好的学习效果。

无线通信中的智能天线:IS-95和第3代CDMA应用_.pdf

无线通信中的智能天线:IS-95和第3代CDMA应用_.pdf

设计模式(JAVA语言实现)--20种设计模式附带源码

课程亮点: 课程培训详细的笔记以及实例代码,让学员开始掌握设计模式知识点 课程内容: 工厂模式、桥接模式、组合模式、装饰器模式、外观模式、享元模式、原型模型、代理模式、单例模式、适配器模式 策略模式、模板方法模式、观察者模式、迭代器模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式 课程特色: 笔记设计模式,用笔记串连所有知识点,让学员从一点一滴积累,学习过程无压力 笔记标题采用关键字标识法,帮助学员更加容易记住知识点 笔记以超链接形式让知识点关联起来,形式知识体系 采用先概念后实例再应用方式,知识点深入浅出 提供授课内容笔记作为课后复习以及工作备查工具 部分图表(电脑PC端查看):

Java8零基础入门视频教程

这门课程基于主流的java8平台,由浅入深的详细讲解了java SE的开发技术,可以使java方向的入门学员,快速扎实的掌握java开发技术!

玩转Linux:常用命令实例指南

人工智能、物联网、大数据时代,Linux正有着一统天下的趋势,几乎每个程序员岗位,都要求掌握Linux。本课程零基础也能轻松入门。 本课程以简洁易懂的语言手把手教你系统掌握日常所需的Linux知识,每个知识点都会配合案例实战让你融汇贯通。课程通俗易懂,简洁流畅,适合0基础以及对Linux掌握不熟练的人学习; 【限时福利】 1)购课后按提示添加小助手,进答疑群,还可获得价值300元的编程大礼包! 2)本月购买此套餐加入老师答疑交流群,可参加老师的免费分享活动,学习最新技术项目经验。 --------------------------------------------------------------- 29元=掌握Linux必修知识+社群答疑+讲师社群分享会+700元编程礼包。 &nbsp;

极简JAVA学习营第四期(报名以后加助教微信:eduxy-1)

想学好JAVA必须要报两万的培训班吗? Java大神勿入 如果你: 零基础想学JAVA却不知道从何入手 看了一堆书和视频却还是连JAVA的环境都搭建不起来 囊中羞涩面对两万起的JAVA培训班不忍直视 在职没有每天大块的时间专门学习JAVA 那么恭喜你找到组织了,在这里有: 1. 一群志同道合立志学好JAVA的同学一起学习讨论JAVA 2. 灵活机动的学习时间完成特定学习任务+每日编程实战练习 3. 热心助人的助教和讲师及时帮你解决问题,不按时完成作业小心助教老师的家访哦 上一张图看看前辈的感悟: &nbsp; &nbsp; 大家一定迫不及待想知道什么是极简JAVA学习营了吧,下面就来给大家说道说道: 什么是极简JAVA学习营? 1. 针对Java小白或者初级Java学习者; 2. 利用9天时间,每天1个小时时间; 3.通过 每日作业 / 组队PK / 助教答疑 / 实战编程 / 项目答辩 / 社群讨论 / 趣味知识抢答等方式让学员爱上学习编程 , 最终实现能独立开发一个基于控制台的‘库存管理系统’ 的学习模式 极简JAVA学习营是怎么学习的? &nbsp; 如何报名? 只要购买了极简JAVA一:JAVA入门就算报名成功! &nbsp;本期为第四期极简JAVA学习营,我们来看看往期学员的学习状态: 作业看这里~ &nbsp; 助教的作业报告是不是很专业 不交作业打屁屁 助教答疑是不是很用心 &nbsp; 有奖抢答大家玩的很嗨啊 &nbsp; &nbsp; 项目答辩终于开始啦 &nbsp; 优秀者的获奖感言 &nbsp; 这是答辩项目的效果 &nbsp; &nbsp; 这么细致的服务,这么好的氛围,这样的学习效果,需要多少钱呢? 不要1999,不要199,不要99,只要9.9 是的你没听错,只要9.9以上所有就都属于你了 如果你: 1、&nbsp;想学JAVA没有基础 2、&nbsp;想学JAVA没有整块的时间 3、&nbsp;想学JAVA没有足够的预算 还等什么?赶紧报名吧,抓紧抢位,本期只招300人,错过只有等时间待定的下一期了 &nbsp; 报名请加小助手微信:eduxy-1 &nbsp; &nbsp;

Python数据清洗实战入门

本次课程主要以真实的电商数据为基础,通过Python详细的介绍了数据分析中的数据清洗阶段各种技巧和方法。

董付国老师Python全栈学习优惠套餐

购买套餐的朋友可以关注微信公众号“Python小屋”,上传付款截图,然后领取董老师任意图书1本。

linux下利用/proc进行进程树的打印

在linux下利用c语言实现的进程树的打印,主要通过/proc下的目录中的进程文件,获取status中的进程信息内容,然后利用递归实现进程树的打印

MySQL数据库面试题(2020最新版)

文章目录数据库基础知识为什么要使用数据库什么是SQL?什么是MySQL?数据库三大范式是什么mysql有关权限的表都有哪几个MySQL的binlog有有几种录入格式?分别有什么区别?数据类型mysql有哪些数据类型引擎MySQL存储引擎MyISAM与InnoDB区别MyISAM索引与InnoDB索引的区别?InnoDB引擎的4大特性存储引擎选择索引什么是索引?索引有哪些优缺点?索引使用场景(重点)...

HoloLens2开发入门教程

本课程为HoloLens2开发入门教程,讲解部署开发环境,安装VS2019,Unity版本,Windows SDK,创建Unity项目,讲解如何使用MRTK,编辑器模拟手势交互,打包VS工程并编译部署应用到HoloLens上等。

150讲轻松搞定Python网络爬虫

【为什么学爬虫?】 &nbsp; &nbsp; &nbsp; &nbsp;1、爬虫入手容易,但是深入较难,如何写出高效率的爬虫,如何写出灵活性高可扩展的爬虫都是一项技术活。另外在爬虫过程中,经常容易遇到被反爬虫,比如字体反爬、IP识别、验证码等,如何层层攻克难点拿到想要的数据,这门课程,你都能学到! &nbsp; &nbsp; &nbsp; &nbsp;2、如果是作为一个其他行业的开发者,比如app开发,web开发,学习爬虫能让你加强对技术的认知,能够开发出更加安全的软件和网站 【课程设计】 一个完整的爬虫程序,无论大小,总体来说可以分成三个步骤,分别是: 网络请求:模拟浏览器的行为从网上抓取数据。 数据解析:将请求下来的数据进行过滤,提取我们想要的数据。 数据存储:将提取到的数据存储到硬盘或者内存中。比如用mysql数据库或者redis等。 那么本课程也是按照这几个步骤循序渐进的进行讲解,带领学生完整的掌握每个步骤的技术。另外,因为爬虫的多样性,在爬取的过程中可能会发生被反爬、效率低下等。因此我们又增加了两个章节用来提高爬虫程序的灵活性,分别是: 爬虫进阶:包括IP代理,多线程爬虫,图形验证码识别、JS加密解密、动态网页爬虫、字体反爬识别等。 Scrapy和分布式爬虫:Scrapy框架、Scrapy-redis组件、分布式爬虫等。 通过爬虫进阶的知识点我们能应付大量的反爬网站,而Scrapy框架作为一个专业的爬虫框架,使用他可以快速提高我们编写爬虫程序的效率和速度。另外如果一台机器不能满足你的需求,我们可以用分布式爬虫让多台机器帮助你快速爬取数据。 &nbsp; 从基础爬虫到商业化应用爬虫,本套课程满足您的所有需求! 【课程服务】 专属付费社群+每周三讨论会+1v1答疑

MySQL 8.0.19安装教程(windows 64位)

话不多说直接开干 目录 1-先去官网下载点击的MySQL的下载​ 2-配置初始化的my.ini文件的文件 3-初始化MySQL 4-安装MySQL服务 + 启动MySQL 服务 5-连接MySQL + 修改密码 先去官网下载点击的MySQL的下载 下载完成后解压 解压完是这个样子 配置初始化的my.ini文件的文件 ...

Python数据挖掘简易入门

&nbsp; &nbsp; &nbsp; &nbsp; 本课程为Python数据挖掘方向的入门课程,课程主要以真实数据为基础,详细介绍数据挖掘入门的流程和使用Python实现pandas与numpy在数据挖掘方向的运用,并深入学习如何运用scikit-learn调用常用的数据挖掘算法解决数据挖掘问题,为进一步深入学习数据挖掘打下扎实的基础。

深度学习原理+项目实战+算法详解+主流框架(套餐)

深度学习系列课程从深度学习基础知识点开始讲解一步步进入神经网络的世界再到卷积和递归神经网络,详解各大经典网络架构。实战部分选择当下最火爆深度学习框架PyTorch与Tensorflow/Keras,全程实战演示框架核心使用与建模方法。项目实战部分选择计算机视觉与自然语言处理领域经典项目,从零开始详解算法原理,debug模式逐行代码解读。适合准备就业和转行的同学们加入学习! 建议按照下列课程顺序来进行学习 (1)掌握深度学习必备经典网络架构 (2)深度框架实战方法 (3)计算机视觉与自然语言处理项目实战。(按照课程排列顺序即可)

网络工程师小白入门--【思科CCNA、华为HCNA等网络工程师认证】

本课程适合CCNA或HCNA网络小白同志,高手请绕道,可以直接学习进价课程。通过本预科课程的学习,为学习网络工程师、思科CCNA、华为HCNA这些认证打下坚实的基础! 重要!思科认证2020年2月24日起,已启用新版认证和考试,包括题库都会更新,由于疫情原因,请关注官网和本地考点信息。题库网络上很容易下载到。

Ubuntu18.04安装教程

Ubuntu18.04.1安装一、准备工作1.下载Ubuntu18.04.1 LTS2.制作U盘启动盘3.准备 Ubuntu18.04.1 的硬盘空间二、安装Ubuntu18.04.1三、安装后的一些工作1.安装输入法2.更换软件源四、双系统如何卸载Ubuntu18.04.1新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列...

sql语句 异常 Err] 1064 - You have an error in your SQL syntax; check the manual that corresponds to your

在我们开发的工程中,有时候会报 [Err] 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ------ 这种异常 不用多想,肯定是我们的sql语句出现问题,下面...

西南交通大学新秀杯数学建模试题

题目比较难,如果符合大家的口味欢迎大家下载哈,提高你的思维想象能力

Windows版YOLOv4目标检测实战:训练自己的数据集

课程演示环境:Windows10; cuda 10.2; cudnn7.6.5; Python3.7; VisualStudio2019; OpenCV3.4 需要学习ubuntu系统上YOLOv4的同学请前往:《YOLOv4目标检测实战:训练自己的数据集》 课程链接:https://edu.csdn.net/course/detail/28745 YOLOv4来了!速度和精度双提升! 与 YOLOv3 相比,新版本的 AP (精度)和 FPS (每秒帧率)分别提高了 10% 和 12%。 YOLO系列是基于深度学习的端到端实时目标检测方法。本课程将手把手地教大家使用labelImg标注和使用YOLOv4训练自己的数据集。课程实战分为两个项目:单目标检测(足球目标检测)和多目标检测(足球和梅西同时检测)。 本课程的YOLOv4使用AlexyAB/darknet,在Windows系统上做项目演示。包括:安装软件环境、安装YOLOv4、标注自己的数据集、整理自己的数据集、修改配置文件、训练自己的数据集、测试训练出的网络模型、性能统计(mAP计算)和先验框聚类分析。还将介绍改善YOLOv4目标检测性能的技巧。 除本课程《Windows版YOLOv4目标检测实战:训练自己的数据集》外,本人将推出有关YOLOv4目标检测的系列课程。请持续关注该系列的其它视频课程,包括: 《Windows版YOLOv4目标检测实战:人脸口罩佩戴检测》 《Windows版YOLOv4目标检测实战:中国交通标志识别》 《Windows版YOLOv4目标检测:原理与源码解析》

Spring Boot -01- 快速入门篇(图文教程)

Spring Boot -01- 快速入门篇 今天开始不断整理 Spring Boot 2.0 版本学习笔记,大家可以在博客看到我的笔记,然后大家想看视频课程也可以到【慕课网】手机 app,去找【Spring Boot 2.0 深度实践】的课程,令人开心的是,课程完全免费! 什么是 Spring Boot? Spring Boot 是由 Pivotal 团队提供的全新框架。Spring Boot...

相关热词 c#中如何设置提交按钮 c#帮助怎么用 c# 读取合并单元格的值 c#带阻程序 c# 替换span内容 c# rpc c#控制台点阵字输出 c#do while循环 c#调用dll多线程 c#找出两个集合不同的
立即提问