程序想法是这样的:
首先在一个类中读取parameter.txt文件的内容,然后再在另外一个类中使用此值,即返回到主类,主类中把此值赋予一个数组,但是返回值总是为0,请帮我看看是怎么回事,谢谢
读取TXT的类:
using System;
using System.IO;
using System.Text;
using System.Collections;namespace ReadAndWrite
{
class Readparametes
{
public const string STE_FILE = "parameter.txt";
public static string Curr_path = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);
public static String para_file = Path.Combine(Curr_path, STE_FILE);
//public static void Reader(string[] paras)
public string Reader(string[] paras)
{
StreamReader reads = new StreamReader("parameter.txt");
String para = "";
paras = para.Split(',');
// Console.WriteLine(para);
while (para != null)
{
para = reads.ReadLine();
}
reads.Close();
Console.WriteLine(para);
return para;
/* FileInfo file = new FileInfo(para_file);//删除用过的parametes.txt
if (file.Exists)
file.Delete();*/ }
}
}
主类,使用读到的txt文本信息:
using System;
using System.IO;
using System.Collections.Generic;
using System.Text;
namespace ReadAndWrite
{
class Program
{
static FileSystemWatcher watcher = new FileSystemWatcher();
static void Main(string[] args)
{
string Slot;
string Model;
string Function;
string Range;
string Resolution;
string Nullval;
string Close;
string[] paras = { "0", "0", "0", "0", "0", "0", "0" };
Readparametes reading = new Readparametes();
reading.Reader(paras);
Console.WriteLine(paras);
System.Threading.Thread.Sleep(1000);
Slot = paras[0];
Model = paras[1];
Function = paras[2];
Range = paras[3];
Resolution = paras[4];
Nullval = paras[5];
Close = paras[6];
// 监听parametes.txt
watcher.Path = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);
watcher.Filter = "parameter.txt";
watcher.EnableRaisingEvents = false;
watcher.NotifyFilter = NotifyFilters.FileName | NotifyFilters.LastWrite;
int i = 0;
FilesUtil.DeleteExistingOutFiles();
do
{
watcher.EnableRaisingEvents = false;
watcher.WaitForChanged(WatcherChangeTypes.All);
watcher.EnableRaisingEvents = true;
i++;
File.WriteAllText("test.txt", i.ToString());
reading.Reader(paras);
Console.WriteLine(paras [0]+paras [1]);
} while (i > 0);
}
}
}
首先在一个类中读取parameter.txt文件的内容,然后再在另外一个类中使用此值,即返回到主类,主类中把此值赋予一个数组,但是返回值总是为0,请帮我看看是怎么回事,谢谢
读取TXT的类:
using System;
using System.IO;
using System.Text;
using System.Collections;namespace ReadAndWrite
{
class Readparametes
{
public const string STE_FILE = "parameter.txt";
public static string Curr_path = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);
public static String para_file = Path.Combine(Curr_path, STE_FILE);
//public static void Reader(string[] paras)
public string Reader(string[] paras)
{
StreamReader reads = new StreamReader("parameter.txt");
String para = "";
paras = para.Split(',');
// Console.WriteLine(para);
while (para != null)
{
para = reads.ReadLine();
}
reads.Close();
Console.WriteLine(para);
return para;
/* FileInfo file = new FileInfo(para_file);//删除用过的parametes.txt
if (file.Exists)
file.Delete();*/ }
}
}
主类,使用读到的txt文本信息:
using System;
using System.IO;
using System.Collections.Generic;
using System.Text;
namespace ReadAndWrite
{
class Program
{
static FileSystemWatcher watcher = new FileSystemWatcher();
static void Main(string[] args)
{
string Slot;
string Model;
string Function;
string Range;
string Resolution;
string Nullval;
string Close;
string[] paras = { "0", "0", "0", "0", "0", "0", "0" };
Readparametes reading = new Readparametes();
reading.Reader(paras);
Console.WriteLine(paras);
System.Threading.Thread.Sleep(1000);
Slot = paras[0];
Model = paras[1];
Function = paras[2];
Range = paras[3];
Resolution = paras[4];
Nullval = paras[5];
Close = paras[6];
// 监听parametes.txt
watcher.Path = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);
watcher.Filter = "parameter.txt";
watcher.EnableRaisingEvents = false;
watcher.NotifyFilter = NotifyFilters.FileName | NotifyFilters.LastWrite;
int i = 0;
FilesUtil.DeleteExistingOutFiles();
do
{
watcher.EnableRaisingEvents = false;
watcher.WaitForChanged(WatcherChangeTypes.All);
watcher.EnableRaisingEvents = true;
i++;
File.WriteAllText("test.txt", i.ToString());
reading.Reader(paras);
Console.WriteLine(paras [0]+paras [1]);
} while (i > 0);
}
}
}
public string Reader(string[] paras)
{
StreamReader reads = new StreamReader("parameter.txt");
String para = "";
paras = para.Split(',');
// Console.WriteLine(para);
while (para != null) //这里一直循环到para为null才会结束循环
{
para = reads.ReadLine();
}
reads.Close();
Console.WriteLine(para);
return para; //然后返回para,也就是说,这个函数永远返回null,有什么作用?
}
{
para = reads.ReadLine();
}
reads.Close();
Console.WriteLine(para);
return para;
这个while跳出的判断条件,仔细看一下!
是null的时候才跳出,之后你返回的就是一个null吧!
{
StreamReader reads = new StreamReader("parameter.txt");
String para = "";
paras = para.Split(','); //这里有意义吗?
// Console.WriteLine(para);
while (para != null)
{
para = reads.ReadLine(); //始终只是一行的值
}
reads.Close();
Console.WriteLine(para);
return para;
}
问题解决,去掉while循环
public static void Reader(out string[] paras)
//public string Reader(string[] paras)
{
StreamReader reads = new StreamReader("parameter.txt");
String para = "";
para = reads.ReadLine();
paras = para.Split(',');
reads.Close();
return ;
}
直接return ReadToEnd()->主类->再分割字符串。
或者函数分割好函数->赋值数组->返回数组