programing

프로젝트의 루트 디렉터리에서 텍스트 파일을 읽는 방법은 무엇입니까?

batch 2023. 6. 10. 08:34
반응형

프로젝트의 루트 디렉터리에서 텍스트 파일을 읽는 방법은 무엇입니까?

프로젝트의 루트 디렉터리에 추가한 텍스트 파일의 첫 줄을 읽고 싶습니다.즉, 솔루션 탐색기가 프로젝트의 .cs 파일과 함께 .txt 파일을 표시합니다.

그래서, 저는 시도했습니다:

TextReader tr = new StreamReader(@"myfile.txt");
string myText = tr.ReadLine();

하지만 이것은 Bin Folder를 참조하는 것이고 내 파일이 거기에 없기 때문에 작동하지 않습니다...어떻게 하면 이 일을 해낼 수 있을까요?:/

감사해요.

솔루션 탐색기에서 내 파일을 마우스 오른쪽 단추로 클릭합니다.txt를 선택하고 "특성"을 선택합니다.

여기서 다음을 설정합니다.Build Action로.content그리고.Copy to Output Directory둘 중 어느 쪽이든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"

여기서 시스템을 사용하여 뒤로 이동할 수 있습니다.IO.디렉토리.상위 가져오기:

_filePath = Directory.GetParent(_filePath).FullName;

한 번은 \bin, 두 번은 \myProjectNamespace로 이동하므로 다음과 같습니다.

_filePath = Directory.GetParent(Directory.GetParent(_filePath).FullName).FullName;

자, 이제 "C:"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);
    }
}

(Charles가 이 답변에서 가져온 일부 코드)

이 경우 절대 경로를 사용해야 합니다.하지만 만약 당신이 그것을 설정한다면.CopyToOutputDirectory = CopyAlways당신이 하고 있는 것처럼 작동할 것입니다.

이 코드에서 액세스할 수 있습니다.root디렉터리 프로젝트:

 string _filePath = Path.GetDirectoryName(System.AppDomain.CurrentDomain.BaseDirectory);

그러면:

StreamReader r = new StreamReader(_filePath + "/cities2.json"))

언급URL : https://stackoverflow.com/questions/6416564/how-to-read-a-text-file-in-projects-root-directory

반응형