C# 参数1:无法从System.IO.FileInfo转换为';字符串'; 使用系统; 使用System.Collections.Generic; 使用System.IO; 使用System.Linq; 名称空间FunkcjaSpilit { 班级计划2 { 静态int_MinWordLength=7; 静态void Main() { DirectoryInfo filepath=newdirectoryinfo(@“D:\project_IAD”); FileInfo[]Files=filepath.GetFiles(“*.sgm”); List firstone=新列表(); foreach(文件中的文件信息文件) { int longWordScont=CalculateLongWordScont(文件,_MinWordLength); Console.WriteLine(“W tekscie numer:“+firstone.IndexOf(file)+”liczba długich słóW到“+longWordScont”); } Console.ReadLine(); } 私有静态int-CalculateLongWordScont(文件信息文件,int-minWordLength) { 返回文件.Split(“”).Where(wordInText=>wordInText.Length>=minWordLength.Count(); } } }
运行此代码后,出现错误: (局部变量)文件信息文件 CS 1503:参数1:无法从System.IO.FileInfo转换为“字符串”C# 参数1:无法从System.IO.FileInfo转换为';字符串'; 使用系统; 使用System.Collections.Generic; 使用System.IO; 使用System.Linq; 名称空间FunkcjaSpilit { 班级计划2 { 静态int_MinWordLength=7; 静态void Main() { DirectoryInfo filepath=newdirectoryinfo(@“D:\project_IAD”); FileInfo[]Files=filepath.GetFiles(“*.sgm”); List firstone=新列表(); foreach(文件中的文件信息文件) { int longWordScont=CalculateLongWordScont(文件,_MinWordLength); Console.WriteLine(“W tekscie numer:“+firstone.IndexOf(file)+”liczba długich słóW到“+longWordScont”); } Console.ReadLine(); } 私有静态int-CalculateLongWordScont(文件信息文件,int-minWordLength) { 返回文件.Split(“”).Where(wordInText=>wordInText.Length>=minWordLength.Count(); } } },c#,C#,运行此代码后,出现错误: (局部变量)文件信息文件 CS 1503:参数1:无法从System.IO.FileInfo转换为“字符串” 如何修复它?我发现代码中有两个问题。这两种情况都是因为不理解FileInfostruct的用途。我将修复其中一个错误,让您从我的修复中学习,自己完成第二个错误 using System; using System.Collections.Generic; using System.IO; using System.Linq; namespace Funkcja
如何修复它?我发现代码中有两个问题。这两种情况都是因为不理解
FileInfo
struct的用途。我将修复其中一个错误,让您从我的修复中学习,自己完成第二个错误
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
namespace FunkcjaSpilit
{
class Program2
{
static int _MinWordLength = 7;
static void Main()
{
DirectoryInfo filePaths = new DirectoryInfo(@"D:\project_IAD");
FileInfo[] Files = filePaths.GetFiles("*.sgm");
List<string> firstone = new List<string>();
foreach (FileInfo file in Files)
{
int longWordsCount = CalculateLongWordsCount(file, _MinWordLength);
Console.WriteLine("W tekscie numer: " + firstone.IndexOf(file) + " liczba długich słów to " + longWordsCount);
}
Console.ReadLine();
}
private static int CalculateLongWordsCount(FileInfo file, int minWordLength)
{
return file.Split(' ').Where(wordInText => wordInText.Length >= minWordLength).Count();
}
}
}
您也可以使用File.ReadAllText()
来实现这一点,它会更简单,更像原始代码,但我更喜欢ReadLines()
至少能提供一些保护,防止大型文件破坏内存
另一个问题在这个表达式中:
private static int CalculateLongWordsCount(FileInfo file, int minWordLength)
{
return File.ReadLines(file.FullName).
Select(line => line.Split(' ').Count(word => word.Length > minWordLength)).
Sum();
}
但是,我还是把这个问题留给您来解决,这样您一定会了解如何使用
FileInfo
struct。与FileInfo
问题不同,此表达式也将始终返回-1
,因为从未将任何数据添加到firstone
列表。file.Split(“”)
=>f.FullName.Split(“”)
或f.Name.Split(“”)
。或者您可以直接使用Directory.GetFiles()
返回string[]
thx,这对带有“Split”的行很有帮助,但是25行中仍然会出现“file”问题。您认为FileInfo文件
变量包含什么?提示:不仅仅是文件名。这也不是文件的内容,“第25行”是什么?错误到底发生在哪里?@Alejandro我相信这是Console.WriteLine()
语句。这是文件信息被错误使用的另一个地方。非常感谢)
firstone.IndexOf(file)