C# 找不到路径
尝试打开文件时出现此错误。文件路径确实存在。我从资源管理器复制了该路径,以确保路径字符串中没有错误 System.IO.FileNotFoundException:找不到文件 /C:\Users\Mario\Documents\ativita\ativita\produtos\u 20180713.CSVC# 找不到路径,c#,csv,xamarin.forms,C#,Csv,Xamarin.forms,尝试打开文件时出现此错误。文件路径确实存在。我从资源管理器复制了该路径,以确保路径字符串中没有错误 System.IO.FileNotFoundException:找不到文件 /C:\Users\Mario\Documents\ativita\ativita\produtos\u 20180713.CSV 首先,您已经给出了完整路径,应该从代码中删除path.GetDirectoryName: banco_produtos[] csv = File.ReadAllLines("C:\\Us
首先,您已经给出了完整路径,应该从代码中删除path.GetDirectoryName:
banco_produtos[] csv = File.ReadAllLines("C:\\Users\\Mario\\Documents\\ativita\\ativita\\produtos_20180713.CSV")
.Skip(1)
.Select(c => c.Split(','))
.Select(x => new //there some code here
});
2-ReadAllLines,返回数组而不是列表,因此您必须使用banco_produtos[]csv或使用.ToList将其转换为列表。这似乎是字符未转义的问题。尝试将路径设置为变量,然后将该变量传递给GetDirectoryName调用 尝试:
为什么要调用Path.GetDirectoryName?如果这是Xamarin应用程序,则它无法读取位于桌面上的文件。它只能读取运行它们的设备/模拟器的文件系统中的文件。@mjwills如果这是Xamarin,目标可能是类Unix系统,在这种情况下,我可以合理地看到Path.GetDirectoryName在Windows样式的路径的开头放了一个/。在代码添加它的C之前没有/。@Jason,如果我放在模拟器中,我如何获得文件路径?我可以执行与winc:\\Users相同的操作,但是emultator中的路径是什么?如果您将目录名传入,则无法从文件中读取行。应完全删除Path.GetDirectoryName。OP确实正确地转义了它们的路径。我现在正在做的是使用@jason的注释并执行了此操作。将文件添加到项目中,并将其添加到资源和代码中:var assembly=IntrospectionExtensions.GetTypeInfotypeofnovo_produto.assembly;Stream=assembly.GetManifestResourceStreamativita.Class1.txt;但现在流返回null。编辑我的注释以反映目录而不是文件。我没有意识到OP的错误是试图使用Path.GetDirectoryName从文件中读取行。我对OP的目的感到困惑。我确实在结尾使用了。ToList。@Mario很棒。我只是想确保代码能为您工作。如果有帮助的话,请投票并标记为答案。这毫无意义。这里最大的问题是路径指向Windows系统,我们在这里讨论的是移动设备。这永远不会像这样工作。我在这里要做的是展示使用File.ReadAllLines的正确方法
banco_produtos[] csv = File.ReadAllLines("C:\\Users\\Mario\\Documents\\ativita\\ativita\\produtos_20180713.CSV")
.Skip(1)
.Select(c => c.Split(','))
.Select(x => new //there some code here
});
var path = @"C:\Users\Mario\Documents\ativita\ativita\";
List <banco_produtos> csv = File.ReadAllLines(Path.GetDirectoryName(path))
.Skip(1)
.Select(c => c.Split(','))
.Select(x => new //there some code here
})