Как читать встроенный ресурсный текстовый файл

Это обсуждение помогло мне решить проблему, с которой я боролся в течение нескольких дней. Я огляделся по всему Интернету, пока не нашел ответ от Джима Тхафа 18 мая в 15:17. С этим ответом мне удалось подключиться. Теперь я хочу вернуть и помочь другим с полным примером. Здесь:

import java.sql.*; 

public class MyDBConnect {

    public static void main(String[] args) throws SQLException {

        try { 
            String dbURL = "jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=whatEverYourHostNameIs)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=yourServiceName)))";
            String strUserID = "yourUserId";
            String strPassword = "yourPassword";
            Connection myConnection=DriverManager.getConnection(dbURL,strUserID,strPassword);

            Statement sqlStatement = myConnection.createStatement();
            String readRecordSQL = "select * from sa_work_order where WORK_ORDER_NO = '1503090' ";  
            ResultSet myResultSet = sqlStatement.executeQuery(readRecordSQL);
            while (myResultSet.next()) {
                System.out.println("Record values: " + myResultSet.getString("WORK_ORDER_NO"));
            }
            myResultSet.close();
            myConnection.close();

        } catch (Exception e) {
            System.out.println(e);
        }       
    }
}
615
задан AA Shakil 9 February 2019 в 20:48
поделиться

3 ответа

Вы можете использовать Assembly.GetManifestResourceStream Метод :

  1. Добавьте следующие использования

     с помощью System.IO;
    используя System.Отражение;
    
  2. Установить свойство соответствующего файла:
    Параметр Действие сборки со значением Встроенный ресурс

  3. Используйте следующий код

var assembly = Assembly.GetExecutingAssembly();
var resourceName = "MyCompany.MyProduct.MyFile.txt";

using (Stream stream = assembly.GetManifestResourceStream(resourceName))
using (StreamReader reader = new StreamReader(stream))
{
    string result = reader.ReadToEnd();
}

resourceName - это имя одного из ресурсов, встроенных в сборку . Например, если вы встраиваете текстовый файл с именем «MyFile.txt» , который помещается в корень проекта с пространством имен по умолчанию «MyCompany.MyProduct» , то resourceName - это «MyCompany.MyProduct.MyFile.txt» . Вы можете получить список всех ресурсов в сборке, используя метод Assembly.GetManifestResourceNames Метод .


Нетрудно догадаться, что получить resourceName только из имени файла (пропустив материал пространства имен):

string resourceName = assembly.GetManifestResourceNames()
  .Single(str => str.EndsWith("YourFileName.txt"));
1122
ответ дан 22 November 2019 в 21:51
поделиться

Некоторый VS проект.NET вводит don’t, автоматически генерирует.NET (.resx) файл. Следующие шаги добавляют Файл ресурсов к Вашему проекту:

  1. Щелкают правой кнопкой по узлу проекта, и выбор Добавляют/Новыми Объект, прокручивают в Файл Ресурсов. В Name поле выбирает соответствующее имя, например, Ресурсы и нажимает кнопку Add.
  2. файл ресурсов Resources.resx добавляется к проекту, и могите рассматриваться как узел в проводнике решения.
  3. На самом деле, два файла создаются, существует также автоматически сгенерированный класс C# Ресурсы. Designer.cs. Don’t редактируют его, это сохраняется VS. Файл содержит класс, названный Resources.

Теперь можно добавить текстовый файл как ресурс, например, XML-файл:

  1. Дважды щелкают по Resources.resx. Выбор Добавляет, что Ресурс> Добавляет Существующий Файл и прокручивает в файл, Вы хотите быть включенными. Уезжайте значение по умолчанию, Внутреннее для Доступа, Изменяют.
  2. значок представляет новый объект ресурса. Если выбрано, область свойства показывает свои свойства. Для XML-файлов, под свойством Encoding выбирают Unicode (UTF-8) †“Кодовая страница 65001 вместо локальной кодовой страницы по умолчанию. Поскольку другие текстовые файлы выбирают корректное кодирование этого файла, например, кодовая страница 1252.
  3. Для текстовых файлов как XML-файлы, класс Resources имеет свойство типа string, который называют в честь включенного файла. Если имя файла, например, RibbonManifest.xml, то свойство должно иметь имя RibbonManifest. Вы находите точное имя в Ресурсах файла кода. Designer.cs.
  4. Использование свойство строки как любое другое свойство строки, например: string xml = Resources.RibbonManifest. Общая форма ResourceFileName.IncludedTextFileName. Использование Don’t ResourceManager.GetString начиная с получать-функции свойства строки уже сделало это.
0
ответ дан 22 November 2019 в 21:51
поделиться

По сути, вы используете System.Reflection , чтобы получить ссылку на текущую сборку. Затем вы используете GetManifestResourceStream () .

Пример со страницы, которую я опубликовал:

Примечание : необходимо добавить с помощью System.Reflection; , чтобы это работало

   Assembly _assembly;
   StreamReader _textStreamReader;

   try
   {
      _assembly = Assembly.GetExecutingAssembly();
      _textStreamReader = new StreamReader(_assembly.GetManifestResourceStream("MyNamespace.MyTextFile.txt"));
   }
   catch
   {
      MessageBox.Show("Error accessing resources!");
   }
85
ответ дан 22 November 2019 в 21:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: