-
读文件与写文件的问题.5
写完文件后,马上读文件为什么读不到文件?请大家帮助.
问题补充:关闭了StreamWriter,马上接着读写进去的文件,读一行是空"";
问题补充:关闭了StreamWriter,马上接着读写进去的文件,读一行是空"";
问题补充:写文件的时候,在finally里面sw.flush(),sw.close();写完之后马上读文件,怎么也读不到文件.MessageBox.show(sr.ReadLine())显示是空"";
问题补充:文件写进去了,读不到.
问题补充:窗体情况下用的IO.
问题补充:关闭资源全在finally里面进去,不管try{}里面语句是否有错,都会执行finally语句,所以写在finally里面.
问题补充:using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
using System.IO;
namespace ADODataBase
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button2_Click(object sender, EventArgs e)
{
this.Close();
}
private void button1_Click(object sender, EventArgs e)
{
SqlConnection con = null;
SqlCommand cmd = null;
SqlDataReader dr = null;
string username=textBox1.Text;
string password = textBox2.Text;
string pathOne =@"c:\info\message.txt";
StreamWriter sw = new StreamWriter(pathOne);
try
{
con = new SqlConnection();
con.ConnectionString = "server=localhost;user=sa;pwd=123456;database=usermanage";
con.Open();
string sql = "select * from usertable where username='"+username+"' and password='"+password+"'";
cmd = new SqlCommand(sql,con);
dr= cmd.ExecuteReader();
sw.WriteLine(dr.FieldCount); //写入列的总数.
if(dr.Read()){
for (int i = 0; i<dr.FieldCount;i++)
{
sw.Write(dr.GetName(i)+":@");
if (i == 0)
{
sw.Write(dr.GetInt32(i).ToString());
}
else
{
sw.Write(dr.GetString(i));
}
sw.WriteLine();
}
Form2 form2 = new Form2();
form2.Show();
}
else
{
MessageBox.Show("此查询没有结果集!!!");
MessageBox.Show("密码或帐号错误,请从新登入.");
}
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
MessageBox.Show("登入失败!!!");
}
finally
{
sw.Flush();
sw.Close(); dr.Close();
con.Close();
}
}
}
}
问题补充:using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Data.SqlClient;
namespace ADODataBase
{
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}
private void Form2_Load(object sender, EventArgs e)
{
string field = null;
string value = null;
string columnCount = null;
int i = 0;
int j = 0;
string pathTwo = @"c:\info\info.txt";
string[] arrayName=null;
string[] arrayValue=null;
FileStream fs = new FileStream(pathTwo, FileMode.Open,FileAccess.Read,FileShare.ReadWrite);
StreamReader sd = new StreamReader(fs,System.Text.Encoding.GetEncoding("UTF-8"));
try
{
while (sd.Peek()>0) {
if (i == 0)
{
columnCount=sd.ReadLine(); //得到列的总数.
arrayName = new string[int.Parse(columnCount)]; //设定数组的大小.
arrayValue = new string[int.Parse(columnCount)]; //设定数组的大小.
}
else
{
field = sd.ReadLine().Trim();
string[] arr = field.Split(new char[] { '@' }); //写入的数据进行分割.
arrayName[j] = arr[0]; //把列名放进一个数组.
arrayValue[j] = arr[1]; //值放进一个数组.
j++;
}
i++;
}
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
MessageBox.Show("读数据出现异常");
}
finally
{
sd.Close();
fs.Close();
}
for(int k=0;k<groupBox1.Controls.Count;k++) //列名
{
Label lb=(Label)groupBox1.Controls[k];
lb.Text=arrayName[k];
}
for(int l=0;l<groupBox2.Controls.Count;l++) //值
{
TextBox tb=(TextBox)groupBox2.Controls[l];
tb.Text=arrayValue[l];
}
}
private void button1_Click(object sender, EventArgs e)
{
}
private void button4_Click(object sender, EventArgs e)
{
string id=textBox7.Text;
string trueness = textBox8.Text;
MessageBox.Show("id="+id);
MessageBox.Show("truenessname="+trueness);
SqlConnection con=null;
SqlCommand cmd=null;
SqlDataReader dr=null;
try
{
con = new SqlConnection("server=localhost;user=sa;pwd=123456;database=usermanage");
con.Open();
cmd=new SqlCommand("select * from usertable where id="+int.Parse(id)+"and truenessname='"+trueness+"'",con);
dr=cmd.ExecuteReader();
//MessageBox.Show("dr.Read()="+dr.Read());
if(dr.Read())
{
}
else
{
MessageBox.Show("没有找到此查询条件的结果,请验证后在查询.");
}
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
MessageBox.Show("连接失败");
}
finally
{
dr.Close();
con.Close();
}
}
}
}
问题补充:程序还正在写.只是把读文件的路径换了,直接复制的内容到另一个文件.
问题补充:我是有意写在info.txt里面读的,因为在message.txt里面读不到程序,所以更改了一个路径,以便继续下面的内容,如果根据你这样理解的话,那在info.txt里面也是读不出来的.
问题补充:嗯,是这个问题,谢了.2011年7月05日 19:13
6个答案 按时间排序 按投票排序
-
采纳的答案
我没明白你的意思。我想你也没明白我的意思。
我的意思是,你的目的是通过form1去把数据写入message.txt中然后从message.txt中读取吗?如果是的话应该把form2放到finally后执行,同时form2里面也是读取message.txt ,
如果两个是不同的两个文件,就不存在写入没法读取的问题,因为就算写入成功了,你也是无法从另一个文件读取这个文件的信息的。2011年7月06日 09:54
-
你写的是c:\info\message.txt文件,读的时候读的是info.txt文件?这样当然会没有啊。
还有就是,你的form2实在try里面执行的。我不知道我理解的对不对,你使用form2去读取数据然后呈现数据吧?finally的函数实在try或者catch执行完以后才执行的。你在调用form2.show()的时候流并没有关闭。你的form2应该放在finally之后执行。具体的话你可以加一个标志变量,在try成功执行则置为true,然后在finally后面通过标志变量来判断时候要调用form22011年7月06日 09:26
-
finally- -,貌似好像记得,finally是函数返回之前调用的吧,你在下面直接打开获取不到的话是正常的。蛋疼,不知道我说的对不对。你试试直接在try里面关闭然后重新打开读取试试
2011年7月05日 20:59
-
用记事本打开看文件是否有数据写入?Flush方法调用试一下。正常来说文件关闭之前会自己调用Flush方法把文件流写入文件的,查查肯定是漏了什么。
2011年7月05日 20:18
相关推荐
例如,你可以用C++读取一个`.ply`文件,对模型进行处理(如减面、平滑),然后再写回结果,以优化模型的性能。或者,你可以将3D扫描的数据转换为`.ply`格式,以便与其他软件进行数据交换。 总的来说,C++读写`.ply`...
这种方式可以提高文件读/写的效率,但需要注意文件的同步问题。 实验步骤 1. 首先,创建一个文件句柄,用于读取和写入文件。 2. 然后,使用 ReadFile 函数读取文件的内容,并将其存储在缓冲区中。 3. 接下来,使用...
- **获取元数据**:读取文件的维度、变量和属性信息,这些信息在NetCDF文件中非常重要,因为它们定义了数据的结构。 - **读取数据**:根据变量名和维度,读取特定变量的数据。例如,`reader.GetVariableData(...
标题中的"C#读取.nc文件"指的是使用C#编程语言处理NetCDF(Network Common Data Form)格式的数据文件。NetCDF是一种自描述、可移植、多维数组数据格式,广泛用于科学计算领域,如气象学、海洋学、地球物理学等。在...
如果文件内容是纯文本,可以使用与读取CSV或txt文件相同的方法。如果内容是二进制,可能需要使用`FileStream`和`BinaryReader`类: ```csharp using System.IO; // 打开二进制dat文件 using (FileStream fs = ...
5.读、写文件需要显示处理进度; 6.增加一个列表,用于展示文本文件的类型、大小、行数等。 一、功能列表 1.显示文件路径选择框,仅展示 .txt类型文件可选; 2.读取文本文件,显示到桌面控件中; 3.读取的文件使用...
1. 打开文件:与写文件类似,但需指定"r"(读取)或"rb"(二进制读取)模式。 2. 读取数据:`read()`方法读取整个文件内容,`readline()`方法读取一行,`readlines()`方法读取所有行并返回列表。对于大文件,建议...
C#读写Matlab文件,支持+ Double array+ Single array+ Char array+Structure+ Cell array+ Sparse array+ Int8 array+ UInt8 array + Int16 array+ UInt16 array+ Int32 array+ UInt32 array+ Int64 array+UInt64 ...
在Java编程中,读取本地SQLite数据库(.db文件)是一项常见的任务,特别是在移动应用开发或者需要离线存储数据的场景下。SQLite是一种轻量级的、开源的关系型数据库,它不需要单独的服务器进程,可以直接在应用程序...
- `readline()`: 按行读取文件。 - `readlines()`: 将文件按行读取为列表。 #### 3. 数据写入 向文件写入数据时,使用`write()`或`writelines()`方法。值得注意的是,在写入之前,应确保文件是以`w`或`a`模式打开的...
2. 读取头部:读取文件头和信息头,验证文件是否为有效的BMP文件。 3. 分析图像信息:从信息头中获取图像宽度、高度、位深度等信息。 4. 分配内存:根据图像大小动态分配内存来存储图像数据。 5. 读取像素数据:逐行...
// 假设我们在读取文件时已将内容保存在一个字符串变量content中 writer.println(content); ``` 最后,不要忘记关闭所有的流以释放系统资源: ```java readerA.close(); readerB.close(); writer.close(); ``` ...
这个Java工程文件旨在提供一个解决方案,帮助开发者读取`.shp`文件,获取其中的几何对象坐标,并将这些坐标写入新的文件中。下面我们将深入探讨如何用Java处理`.shp`文件以及相关的技术要点。 首先,要读取`.shp`...
本文将详细介绍如何使用MATLAB进行SGY和SEGY格式的地震数据读取与写入操作。 首先,SGY和SEGY格式都是用于存储地震记录的二进制文件格式。SEGY(Standard for the Exchange of Geophysical Data)是地震行业的国际...
在读取文件过程中可能会遇到各种问题,如文件不存在、无权限、文件正在被其他进程使用等。因此,编写代码时应考虑异常处理,使用`try/except`语句捕获并处理可能出现的错误。 五、性能优化 对于大文件,一次性读取...
总的来说,通过使用UCanAccess驱动,Java开发者可以方便地与Access数据库进行交互,包括分页读取数据。理解和掌握这个过程对于处理需要与Access数据库进行集成的项目至关重要。在实际开发中,可以根据具体需求进行...
配置文件,XML文件读写.rar XML的简单易于在多数应用程序中读/写数据,XML是数据交换的公共语言,很多不同的应用软件都支持XML文件。 配置文件,是一种计算机文件,可以对程序配置初始参数;设置程序初始数据。
然后,我们可以使用`fread`函数按字节读取文件,根据解析出的信息将字节转换为适当的数值格式。考虑到SEGY文件可能包含多个道(trace),我们需要处理每一道的数据。 以下是一个基本的MATLAB代码示例,用于读取SEGY...
根据给定的文件信息,我们可以总结出一系列关于Java中读取文件的方法,这些方法涵盖了不同层次的数据读取,包括字节、字符以及行级别的读取。以下是对这些知识点的详细阐述: ### Java读取文件方法大全:读取File流...
读取rinex2.10导航电文(.n)与观测文件(.o)