내 프로젝트의 루트 디렉토리에 추가 한 텍스트 파일의 첫 번째 줄을 읽고 싶습니다. 의미, 내 솔루션 탐색기가 내 프로젝트의 내 .cs 파일과 함께 .txt 파일을 표시합니다.
그래서 나는 시도했습니다.
TextReader tr = new StreamReader(@"myfile.txt");
string myText = tr.ReadLine();
그러나 이것은 Bin 폴더를 참조하고 있고 내 파일이 거기에 없기 때문에 작동하지 않습니다. 어떻게 작동시킬 수 있습니까? : /
감사
답변
솔루션 탐색기에서 myfile.txt를 마우스 오른쪽 단추로 클릭하고 “속성”을 선택합니다.
거기에서 Build Action
to content
및 Copy to Output Directory
to Copy always
또는Copy if newer
답변
다음을 사용하여 웹 사이트 프로젝트의 루트 디렉토리를 가져올 수 있습니다.
String FilePath;
FilePath = Server.MapPath("/MyWebSite");
또는 다음과 같이 기본 디렉토리를 가져올 수 있습니다.
AppDomain.CurrentDomain.BaseDirectory
답변
프로젝트에 리소스 파일을 추가합니다 (프로젝트-> 속성-> 리소스를 마우스 오른쪽 단추로 클릭). “문자열”이라고 표시된 곳에서 “파일”로 전환 할 수 있습니다. “리소스 추가”를 선택하고 파일을 선택하십시오.
이제 Properties.Resources
컬렉션을 통해 파일을 참조 할 수 있습니다 .
답변
private string _filePath = Path.GetDirectoryName(System.AppDomain.CurrentDomain.BaseDirectory);
위의 방법을 사용하면 다음과 같은 결과를 얻을 수 있습니다.
"C:\Users\myuser\Documents\Visual Studio 2015\Projects\myProjectNamespace\bin\Debug"
여기에서 System.IO.Directory.GetParent를 사용하여 뒤로 이동할 수 있습니다.
_filePath = Directory.GetParent(_filePath).FullName;
1 번은 \ bin으로, 2 번은 \ myProjectNamespace로 이동하므로 다음과 같습니다.
_filePath = Directory.GetParent(Directory.GetParent(_filePath).FullName).FullName;
이제 “C : \ Users \ myuser \ Documents \ Visual Studio 2015 \ Projects \ myProjectNamespace”와 같은 것이 있으므로 최종 경로를 fileName에 첨부하기 만하면됩니다. 예를 들면 다음과 같습니다.
_filePath += @"\myfile.txt";
TextReader tr = new StreamReader(_filePath);
도움이 되었기를 바랍니다.
답변
포함시킬 수도 있습니다 (빌드 작업을로 설정 Resource
). 여기에서 검색하는 방법은 다음과 같습니다.
private static UnmanagedMemoryStream GetResourceStream(string resName)
{
var assembly = Assembly.GetExecutingAssembly();
var strResources = assembly.GetName().Name + ".g.resources";
var rStream = assembly.GetManifestResourceStream(strResources);
var resourceReader = new ResourceReader(rStream);
var items = resourceReader.OfType<DictionaryEntry>();
var stream = items.First(x => (x.Key as string) == resName.ToLower()).Value;
return (UnmanagedMemoryStream)stream;
}
private void Button1_Click(object sender, RoutedEventArgs e)
{
string resName = "Test.txt";
var file = GetResourceStream(resName);
using (var reader = new StreamReader(file))
{
var line = reader.ReadLine();
MessageBox.Show(line);
}
}
답변
이 경우 절대 경로를 사용해야합니다. 그러나를 설정하면 CopyToOutputDirectory = CopyAlways
수행하는대로 작동합니다.
답변
이 코드에서 root
디렉토리 프로젝트에 액세스합니다 .
string _filePath = Path.GetDirectoryName(System.AppDomain.CurrentDomain.BaseDirectory);
그때:
StreamReader r = new StreamReader(_filePath + "/cities2.json"))