2016-07-28 3 views
-3

В настоящее время я создаю пользовательский интерфейс для хранителя заметок и просто собираюсь просмотреть документы и т. Д., Но мне было интересно, какой тип файла мне нужно создать, если бы вместо этого я хотел делать что-то вроде пометить файл и т. д., желательно в C#, в основном сделать мой собственный Evernote, как эти программы хранят заметки?Создание файлов с использованием C#, как evernote

+0

Что вы хотите сказать, отметив их? Какой тег вы добавите в файл? и должны ли пользователи видеть эти теги? – MasterXD

+0

да, пометка, так что я могу искать его, думаю, всегда, не совсем уверен, как это работает, но я так много разобрался, и не знаю, где ближе к ответу, спасибо – berni3mack

+0

Потерпи меня, потому что для ответа ответ займет некоторое время, но я есть две идеи, которые вам могут понравиться. – MasterXD

ответ

0

Я не знаю, как напрямую пометить файл, но вы можете создать свою собственную систему для этого. Я упомянул два способа сделать это:

  1. Первый способ форматировать содержимое заметки/файла, так что есть две части, теги и фактический текст. Когда программа загружает заметку/файл, она разделяет теги и текст. Это имеет недостаток, что программа должна загрузить весь файл, чтобы просто найти теги.

  2. Второй способ - иметь базу данных с именем файла и связанными с ним тегами. Таким образом, программе не нужно загружать весь файл, чтобы найти теги.

Первый способ

В этом решении вам нужно форматировать файлы определенным образом

<Tags> 
tag1,tag2,tag3 
</Tags> 
<Text> 
The text you 
want in here 
</Text> 

Создав файл, как это, программа может отделить теги от текст. Для того, чтобы загрузить это теги, которые должны были бы этот код:

public List<string> GetTags(string filePath) 
{ 
    string fileContents; 

    // read the file if it exists 
    if (File.Exists(filePath)) 
     fileContents = File.ReadAllText(filePath); 
    else 
     return null; 

    // Find the place where "</Tags>" is located 
    int tagEnd = fileContents.IndexOf("</Tags>"); 

    // Get the tags 
    string tagString = fileContents.Substring(6, tagEnd - 6).Replace(Environment.NewLine, ""); // 6 comes from the length of "<Tags>" 

    return tagString.Split(',').ToList(); 
} 

Затем, чтобы получить текст, который нужно это:

public string GetText(string filePath) 
{ 
    string fileContents; 

    // read the file if it exists 
    if (File.Exists(filePath)) 
     fileContents = File.ReadAllText(filePath); 
    else 
     return null; 

    // Find the place where the text content begins 
    int textStart = fileContents.IndexOf("<Text>") + 6 + Environment.NewLine.Length; // The length on newLine is neccecary because the line shift after "<Text>" shall NOT be included in the text content 

    // Find the place where the text content ends 
    int textEnd = fileContents.LastIndexOf("</Text>"); 

    return fileContents.Substring(textStart, textEnd - textStart - Environment.NewLine.Length); // The length again to NOT include a line shift added earlier by code 
} 

Тогда я дам вам узнать, как сделать все остальное.

Второй способ

В этом решении у вас есть файл базы данных по всем файлам и их соответствующими тегами. Этот файл базы данных будет выглядеть следующим образом:

[filename]:[tags] 
file.txt:tag1, tag2, tag3 
file2.txt:tag4, tag5, tag6 

Программа будет читать имя файла и метки на этом пути:

public static void LoadDatabase(string databasePath) 
{ 
    string[] fileContents; 

    // End process if database doesn't exist 
    if (File.Exists(databasePath)) 
     return; 

    fileContents = File.ReadAllLines(databasePath); // Read all lines seperately and put them into an array 

    foreach (string str in fileContents) 
    { 
     string fileName = str.Split(':')[0]; // Get the filename 
     string tags = str.Split(':')[1]; // Get the tags 

     // Do what you must with the information 
    } 
} 

Я надеюсь, что это помогает.

+0

есть, def. дал мне необходимую информацию, и я могу прочитать код! Серьезно еще раз спасибо !!!!! – berni3mack

+0

@ berni3mack большой! Я рад, что смогу помочь. – MasterXD

Смежные вопросы