java和C#中的文件I / O

时间:2014-05-23 15:00:15

标签: java c#

这个java代码是为了读取文本文件而编写的,如下所示:

AL  B  C  DF
E  FBI  GL  H
IB  J  K  LNH

java代码:

  try{
    BufferedReader in = new BufferedReader(new FileReader(defaultFile));
      while ( (str = in.ReadLine()) != null) { 
          StringTokenizer es = new StringTokenizer(str, "\t");
          Parameter param = new Parameter(); 

          param.setParameterName(es.nextToken());
          param.setParameterType(es.nextToken());
          ...
          parameterVector.addElement(param);
       }
          in.Close();
    }
        catch (Exception ex) {
          return ("can not find valid default parameter file");
        }  

我想将此代码转换为C#。为了能够一次读取一行文本文件(相对于列),我需要有类似令牌的东西。我找不到C#中StringTokenizer的任何等价物,所以我考虑在列之间定义空格(''),但它不适用于str.columns(空格),它被定义为参数。

这就是我在做的事情:

try{
    System.IO.StreamReader inBuffer = new System.IO.StreamReader(@"C:\Users\WriteLines2.txt");

    while ( (str = inBuffer.ReadLine()) != null) {
        char[] space = {' '};
        string[] columns = str.Split(space);
        Parameter param = new Parameter();
            param.setParameterName(str.columns(space));
            param.setParameterType(str.columns(space));
    }
        inBuffer.Close();
    }
      catch (Exception ex) {
        return ("can not find valid default parameter file");
      } 

有没有人知道如何阅读有关列的文本文件。

提前致谢

2 个答案:

答案 0 :(得分:0)

使用StringSplitOptions.RemoveEmptyEntries

string[] columns = str.Split(new [] { ' ' },StringSplitOptions.RemoveEmptyEntries);

然后:

int i = 0;
Parameter param = new Parameter();
param.setParameterName(columns[i++]);
param.setParameterType(columns[i++]);
...
parameterVector.addElement(param);

答案 1 :(得分:0)

在Java中,您将与\t分开。

尝试使用

string [] values = str.split (new char [] {'\t'}, StringSplitOptions.RemoveEmptyEntries);
Parameter param = new Parameter();
int i=0;
if (i>=values.Length) continue;
param.setParameterName(values [i++]);
if (i>=values.Length) continue;
param.setParameterType(values [i++]);
...