using System;
using System.IO;
namespace GetFilesFromDirectory
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Write your Name of Disc");
string myDisc = Console.ReadLine();
string myDisc1 = "@\"";
Console.WriteLine("Write your Directory");
string myDir1 = Console.ReadLine();
string myDir = ":\\";
string myDir2 = "\\\"";
string myPath = myDisc1 + myDisc + myDir + myDir1 + myDir2;
Console.WriteLine(myPath);
string[] filePaths = Directory.GetFiles(myPath);
foreach (var files in filePaths)
{
Console.WriteLine(files);
}
Console.ReadLine();
}
}
}
答案 0 :(得分:0)
从我可以告诉您的myPath
看起来像@"discName:\dirName\"
,您不需要附加@"
或"
。
当您创建一个新的字符串变量以注意它是String literal时,会使用这些符号,但是您要在生成的实际字符串中包含这些字符。
换句话说,请删除myDisc1
和myDir2
正如DrKoch所指出的那样更好。
string myPath = Path.Combine(myDisc + @":\", myDir1);
答案 1 :(得分:0)
试试这个
static void Main(string[] args)
{
Console.WriteLine("Write your Name of Disc");
//You need to add :\ to make it a fullPath
string myDisc = Console.ReadLine()+":\\";
Console.WriteLine("Write your Directory");
string myDir1 = Console.ReadLine();
string myPath = Path.Combine(myDisc , myDir1);
Console.WriteLine(myPath);
string[] filePaths = Directory.GetFiles(myPath);
foreach (var files in filePaths)
{
Console.WriteLine(files);
}
Console.ReadLine();
}
你在做什么是创建一个字符串,它是你想要的字符串的字面表示,但你不需要这样做。
例如,如果你这样写:
string path=@"c:\dir\subdir";
其实际价值为c:\dir\subdir
而是这个"@\"c:\\dir\\subdir\""
;将会
@"c:\dir\subdir"
阅读这些文章以更好地理解字符串文字和逐字字符串https://msdn.microsoft.com/en-us/library/aa691090(v=vs.71).aspx
https://msdn.microsoft.com/en-us/library/362314fe.aspx
https://msdn.microsoft.com/en-us/library/h21280bw.aspx