c#读取一个文件夹中的文件?高分送.不够再给100分.

signalgao 2004-05-08 11:28:07
读出一个文件夹中的所有文件(文件数从0个到N多不定).没有文件返回假.
都是ascii码文件.
读每个文件的前一部分至出现第一个 /s./s/r 为止.
读出来放后放至string[] filetsr中.
请高手作答 .
谢谢!
...全文
845 12 打赏 收藏 举报
写回复
12 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
wangsaokui 2004-05-08
挣分不容易,今天还没开张,你的分有多的话就多给点吧!
  • 打赏
  • 举报
回复
wangsaokui 2004-05-08
试试看,没来得及调试,有问题自己改改吧!

using System;
using System.IO;

class Test
{
public static void Main()
{
try
{
// Only get files that begin with the letter "c."
int i=0;
string[] dirs = Directory.GetFiles(@"c:\", "c*");
Console.WriteLine("The number of files starting with c is {0}.", dirs.Length);
string[] filetsr=new String[dirs.Length];
foreach (string dir in dirs)
{
FileStream fs = new FileStream(dir,FileMode.Open);
byte[] readBuf=new byte[fs.Length];
syncF.Read(readBuf,0,fs.Length);

data = Encoding.ASCII.GetString(readBuf);
if (data.IndexOf("/s./s/r") > -1)
{
i++;
filestr[i]=Microsoft.Basic.Left(data.IndexOf("/s./s/r") -1)
}

}
}
catch (Exception e)
{
Console.WriteLine("The process failed: {0}", e.ToString());
}
}
}
  • 打赏
  • 举报
回复
lihao9806 2004-05-08
strFiles = Directory.GetFiles(@"c:\Import");
foreach(string strFile in strFiles)
{
File.Move(strFile,strFile.Replace("Import","Rubbish_Files"));
上面这句换为你的处理。
}
  • 打赏
  • 举报
回复
gabriel1 2004-05-08
用foreach语句读取
  • 打赏
  • 举报
回复
signalgao 2004-05-08
顶呀.
一头雾水.
  • 打赏
  • 举报
回复
lwjlwj 2004-05-08
DirectoryInfo 下GetFiles()属性,用foreach遍历出来即可
  • 打赏
  • 举报
回复
wangsaokui 2004-05-08
fs.Read(readBuf,0,(Convert.ToInt32(fs.Length)));
楼主注意需要重新生成项目。
  • 打赏
  • 举报
回复
wangsaokui 2004-05-08
using System;
using System.IO;
using Microsoft.Baisc;
using System.Text;
  • 打赏
  • 举报
回复
signalgao 2004-05-08
F:\c#\testdir\Class1.cs(19): 与“System.IO.Stream.Read(byte[], int, int)”最匹配的重载方法具有一些无效参数
F:\c#\testdir\Class1.cs(21): 找不到类型或命名空间名称“Encoding”(是否缺少 using 指令或程序集引用?)
F:\c#\testdir\Class1.cs(25): 类型或命名空间名称“Basic”在类或命名空间“Microsoft”中不存在(是否缺少程序集引用?)
你那里有.NET的话你调试一下.

fs.Read(readBuf,0,fs.Length);
我改成了. fs.Read(readBuf,0,Convert.ToInt64(fs.Length));还是不行.
麻烦你看一下.


  • 打赏
  • 举报
回复
CMIC 2004-05-08
我也没测试,你自己是吧
private object ReadFiles(string pPath)
{
System.IO.DirectoryInfo mDir=new System.IO.DirectoryInfo(pPath);
if(mDir.GetFiles().Length==0)
{

}
else
{
System.Collections.ArrayList mList=new System.Collections.ArrayList();
foreach(FileInfo mFile in mDir.GetFiles())
{
FileStream mFileStm=mFile.Open(FileMode.Open);
int mFileLen=(int)mFileStm.Length;
byte[] mBytes=new byte[mFileLen];
mFileStm.Read(mBytes,0,mFileLen);
mFileStm.Close();

string mFileString=System.Text.Encoding.ASCII.GetString(mBytes);
int mIntIndex=mFileString.IndexOf(@"/s./s/r");
if(mIntIndex!=-1)
{
mList.Add(mFileString.Substring(0,mIntIndex));
}
}
if(mList.Count!=0)
{
string[] filetsr=new string[mList.Count];
mList.CopyTo(filetsr);
return filetsr;
}
}
return false;
}
  • 打赏
  • 举报
回复
wangsaokui 2004-05-08
using System;
using System.IO;

class Test
{
public static void Main()
{
try
{
// Only get files that begin with the letter "c."
int i=0;
string[] dirs = Directory.GetFiles(@"c:\", "c*");
Console.WriteLine("The number of files starting with c is {0}.", dirs.Length);
string[] filetsr=new String[dirs.Length];
foreach (string dir in dirs)
{
FileStream fs = new FileStream(dir,FileMode.Open);
byte[] readBuf=new byte[fs.Length];
fs.Read(readBuf,0,fs.Length);

string data = Encoding.ASCII.GetString(readBuf);
if (data.IndexOf("/s./s/r") > -1)
{
i++;
filestr[i]=Microsoft.Basic.Left(data.IndexOf("/s./s/r") -1)
}

}
}
catch (Exception e)
{
Console.WriteLine("The process failed: {0}", e.ToString());
}
}
}

^_^ 不好意思,还是你观察仔细。
  • 打赏
  • 举报
回复
signalgao 2004-05-08
syncF 和data 都没定义.
楼上的写仔细一点行不?

谢谢
  • 打赏
  • 举报
回复
相关推荐
发帖
C#
加入

10.7w+

社区成员

.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
申请成为版主
帖子事件
创建了帖子
2004-05-08 11:28
社区公告

让您成为最强悍的C#开发者