在C#中开发智能设备应用程序(PDA),在处理文件的读取时,我的应用程序部署到PDA上,,急救,在线等...
在C#中开发智能设备应用程序(PDA),在处理文件的读取时,我的应用程序部署到PDA上不能读取文件,而把此应用程序在WINDOWS里运行就可以.
疑问:PDA上是不是不能用OpenText这种方法打开文件?
程序代码如下:StreamReader s = File.OpenText("PD.ADB");
string read = null;
while ((read = s.ReadLine()) != null)
{
if (read.Substring(read.Length-2,1)!="0")
{
listBox1.Items.Add(read);
}
}
s.Close();
请各位朋友看看..帮下忙解决一下!
问题点数:50、回复次数:17Top
1 楼lextm(LeLe)回复于 2005-12-15 13:18:32 得分 0
如果Compact Framework里面StreamReader有这个方法的话,应该是可以读取的。我这边没有装MSDN,你自己查看一下。反正CF里面少了很多东西。Top
2 楼fashionman(三石)回复于 2005-12-19 16:05:11 得分 0
StreamReader,用file这样的方法读取我都试过啦..可是还是不行的.
Top
3 楼fashionman(三石)回复于 2005-12-19 16:09:09 得分 0
继续求救中.......HELP METop
4 楼eastasp(东东)回复于 2005-12-19 20:46:36 得分 5
方法很多,给你一个,稍微修改一下 sPath: 文件名包括路径
try
{
FileStream fs = new FileStream(sPath, FileMode.Open, FileAccess.Read);
myFuns.memset(sLine,myFuns.nDataRowLength,0);
while (fs.Read(sLine,0,myFuns.nDataRowLength) > 0)
{
string s = System.Text.Encoding.Default.GetString(sLine,0,myFuns.nDataRowLength);
if (KeyCompare(s,sSearch))
{
fs.Close();
return s;
}
myFuns.memset(sLine,myFuns.nDataRowLength,0);
}
fs.Close();
}
catch (Exception e)
{
ShowErrMessage(e.ToString() + "@" + "myFuns.SearchFile");
}
return "";
}Top
5 楼eastasp(东东)回复于 2005-12-19 20:52:27 得分 0
StreamReader sr = File.OpenText(writeFile);
string s = sr.ReadLine();
sr.Close();
if (s.Trim().Equals("")) return;
哦,一定要记住要把 File.OpenText("PD.ADB")-->PD.ADB 路径名称写全.如果这样不可以,再看一下是否一定要后缀名称为pd.txt .上面两种方法我都用过,pda是没有问题的
如果还有问题可以联系我east_asp@163.comTop
6 楼zeusvenus()回复于 2005-12-20 00:08:16 得分 5
可能是.NET FX版本不同引起的运行差异。查一下看.NET FRAMEWORK精简版支持不支持你的写法。Top
7 楼fashionman(三石)回复于 2005-12-20 10:49:59 得分 0
嗯...我再看看...Top
8 楼lander9999(★★★★★)回复于 2005-12-20 18:03:49 得分 20
PDA上缺省目录是"\",和PC上有点不一样。Top
9 楼fashionman(三石)回复于 2005-12-21 13:41:32 得分 0
楼上的 lander9999.请问那这个怎么处理呢.Top
10 楼userxk(勇敢的心)回复于 2005-12-21 14:07:03 得分 0
给你一个实际使用中的代码片段:
string s = "";
string temp1 = "";
string temp2 = "";
string temp3 = "";
int k=0;
using (StreamReader sr = File.OpenText(FILE_NAME))
{
while ((s = sr.ReadLine()) != null)
{
switch(k)
{
case 0:
temp1 = s;
break;
case 1:
temp2 = s;
break;
case 2:
temp3 = s;
break;
}
k++;
}
}Top
11 楼fashionman(三石)回复于 2005-12-22 09:51:38 得分 0
现在的问题是:
"未处理的System.IO.FileNotFoundExecption"类型的异常出现在mscorlib.dll 中。
其他信息: FileNotFoundException
我也是试了好多方法来解决,结果还是无解!Top
12 楼userxk(勇敢的心)回复于 2005-12-23 08:56:37 得分 5
大哥,你这是读取的文件不存在,而你又没处理这个异常。Top
13 楼fashionman(三石)回复于 2005-12-23 09:18:05 得分 0
我知道是这个问题,不过就是没法取得文件.我把这个文件放在DEBUG目录下运行,可是还是不行.
在文件读取时,我用的是文件的相对路径.....Top
14 楼lander9999(★★★★★)回复于 2005-12-23 12:04:34 得分 0
strFullAppName = Assembly.GetExecutingAssembly().GetName().CodeBase.Replace("file:///","");
strFullAppPath = Path.GetDirectoryName(strFullAppName);
strFullFileName = Path.Combine(strFullAppPath, "data.xml");
使用绝对路径就可以了.Top
15 楼fashionman(三石)回复于 2005-12-23 15:24:13 得分 0
用这种绝对路径,PDA中也能识别吗?
这方法能否再细说一下,最近我是做程序一点感觉都没有啦...
谢谢!Top
16 楼lander9999(★★★★★)回复于 2005-12-23 18:40:30 得分 5
贴个代码,参考一下:
string strFullAppName = Assembly.GetExecutingAssembly().GetName().CodeBase.Replace("file:///","");
string strFullAppPath = Path.GetDirectoryName(strFullAppName);
string FileName = Path.Combine(strFullAppPath, "test.txt");
string TestString = "这是一个测试This is a Test";
System.Text.Encoding Encoding = System.Text.Encoding.GetEncoding("gb2312");
FileStream sw = File.OpenWrite(FileName);
sw.Write(Encoding.GetBytes(TestString),0,Encoding.GetByteCount(TestString));
sw.Close();
上面的代码在执行文件路径下创建了一个"test.txt"文件,文件内容是"这是一个测试This is a Test"Top
17 楼eastasp(东东)回复于 2005-12-24 01:00:51 得分 10
//完整得函数: sFileName 写文件名就可以了,取可执行程序得路径
//--show message box
public static string GetFullFilePath(string sFileName)
{
if (sFileName.Equals("")) return "";
string sFullAppFileName = Assembly.GetExecutingAssembly().GetName().CodeBase;
string sAppPath = Path.GetDirectoryName(sFullAppFileName);
string sRetFileName = Path.Combine(sAppPath,sFileName);
return sRetFileName;
}
如果你把文件放在可执行程序根目录下 操作如下: myFuns 是我得类名你可以不管他
myFuns.GetFullFilePath(myFuns.DATA_FILE_NAME)Top




