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

signalgao 2004-05-08 11:28:07
读出一个文件夹中的所有文件(文件数从0个到N多不定).没有文件返回假.
都是ascii码文件.
读每个文件的前一部分至出现第一个 /s./s/r 为止.
读出来放后放至string[] filetsr中.
请高手作答 .
谢谢!
...全文
873 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
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 都没定义.
楼上的写仔细一点行不?

谢谢

111,092

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

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

试试用AI创作助手写篇文章吧