在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(); 
请各位朋友看看..帮下忙解决一下!

解决方案 »

  1.   

    如果Compact Framework里面StreamReader有这个方法的话,应该是可以读取的。我这边没有装MSDN,你自己查看一下。反正CF里面少了很多东西。
      

  2.   

    StreamReader,用file这样的方法读取我都试过啦..可是还是不行的.
      

  3.   

    方法很多,给你一个,稍微修改一下 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 "";
    }
      

  4.   

    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是没有问题的 
    如果还有问题可以联系我[email protected]
      

  5.   

    可能是.NET FX版本不同引起的运行差异。查一下看.NET FRAMEWORK精简版支持不支持你的写法。
      

  6.   

    PDA上缺省目录是"\",和PC上有点不一样。
      

  7.   

    楼上的 lander9999.请问那这个怎么处理呢.
      

  8.   

    给你一个实际使用中的代码片段:
    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++;
    }

    }
      

  9.   

    现在的问题是:
    "未处理的System.IO.FileNotFoundExecption"类型的异常出现在mscorlib.dll 中。其他信息: FileNotFoundException我也是试了好多方法来解决,结果还是无解!
      

  10.   

    我知道是这个问题,不过就是没法取得文件.我把这个文件放在DEBUG目录下运行,可是还是不行.
    在文件读取时,我用的是文件的相对路径.....
      

  11.   

    strFullAppName = Assembly.GetExecutingAssembly().GetName().CodeBase.Replace("file:///","");
    strFullAppPath = Path.GetDirectoryName(strFullAppName);
    strFullFileName = Path.Combine(strFullAppPath, "data.xml");使用绝对路径就可以了.
      

  12.   

    用这种绝对路径,PDA中也能识别吗?
    这方法能否再细说一下,最近我是做程序一点感觉都没有啦...
    谢谢!
      

  13.   

    贴个代码,参考一下:
          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"
      

  14.   

    //完整得函数: 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)