Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.06.2012, 14:41   #1
samouelson
Пользователь
 
Регистрация: 07.12.2009
Сообщений: 46
Радость Открыть файл из директории программы

Доброго времени суток, уважаемые программисты. Не могу найти информацию по тому, как организовать чтение файла из заранее заданного места (в моем случае в ячейку БД, но это не важно).
Все работает, если считывать файл (в данном случае в ячейку БД) через openfiledialog:
Код:
 #region Запись в БД 3DM файла
        private void btnWrite3D_Click(object sender, EventArgs e)
        {
            Stream myStream;
            OpenFileDialog openFileDialog1 = new OpenFileDialog();
            openFileDialog1.Filter = "3dm files (*.3dm)|*.3dm|All files (*.*)|*.*";
            openFileDialog1.FilterIndex = 1;
            openFileDialog1.RestoreDirectory = true;
            if (openFileDialog1.ShowDialog() == DialogResult.OK)
            {
                if ((myStream = openFileDialog1.OpenFile()) != null)
                {
                    byte[] buf = new byte[myStream.Length];
                    myStream.Read(buf, 0, (int)myStream.Length);
                    myStream.Close();
                    data.Rows[sqldataGrid.CurrentCell.RowNumber][sqldataGrid.CurrentCell.ColumnNumber] = buf;
                }
            }
        }
        #endregion
Вот директория, из которой я собираюсь считывать файл
Код:
string newPath = Path.Combine(Application.StartupPath, @"temp\model.3dm");
То есть, как я понимаю сейчас надо залить в поток myStream этот самый файл? Каким образом сделать это?

Будет что-то вроде этого
Код:
Stream myStream;
            string newPath = Path.Combine(Application.StartupPath, @"temp\model.3dm");
            
            if ((myStream = НЕ ВТЫКАЮ ЧТО_ТО != null)
            {
                byte[] buf = new byte[myStream.Length];
                myStream.Read(buf, 0, (int)myStream.Length);
                myStream.Close();
                data.Rows[sqldataGrid.CurrentCell.RowNumber][sqldataGrid.CurrentCell.ColumnNumber] = buf;
            }
Спасибо.
samouelson вне форума Ответить с цитированием
Старый 20.06.2012, 15:46   #2
Reskov
Форумчанин
 
Аватар для Reskov
 
Регистрация: 17.12.2008
Сообщений: 250
По умолчанию

наверное так
Код:
           using (var fstream = File.Open(path, FileMode.Open))
                {
                    byte[] buf = new byte[fstream.Length];
                    fstream.Read(buf, 0, (int)fstream.Length);
                    data.Rows[sqldataGrid.CurrentCell.RowNumber][sqldataGrid.CurrentCell.ColumnNumber] = buf;
                }
Reskov вне форума Ответить с цитированием
Старый 20.06.2012, 15:49   #3
Reskov
Форумчанин
 
Аватар для Reskov
 
Регистрация: 17.12.2008
Сообщений: 250
По умолчанию

директорию где находится испольняемый файл можно получить так, помните про Shallow copy
Код:
 private static string GetAssemblyDirectory()
        {
            string codeBase = Assembly.GetExecutingAssembly().CodeBase;
            var uri = new UriBuilder(codeBase);
            string path = Uri.UnescapeDataString(uri.Path);
            return Path.GetDirectoryName(path);
        }
Reskov вне форума Ответить с цитированием
Старый 20.06.2012, 16:17   #4
samouelson
Пользователь
 
Регистрация: 07.12.2009
Сообщений: 46
По умолчанию

Большое спасибо, Reskov! Вы мне очень помогли! +1
samouelson вне форума Ответить с цитированием
Старый 20.06.2012, 19:28   #5
Reskov
Форумчанин
 
Аватар для Reskov
 
Регистрация: 17.12.2008
Сообщений: 250
По умолчанию

пожалуйста) обращайтесь
Reskov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ShellExecute. Открыть explorer.exe в нуждной директории и с нужным выделенным файлом. Delphi_ProGer Win Api 3 27.02.2012 00:32
Открыть файл, разделить ячейку на 1000, сохранить файл, закрыть файл. Как? Ник Харди Microsoft Office Excel 7 30.01.2012 18:47
Открыть файл dmitriegorovih Общие вопросы Delphi 2 24.08.2010 12:34
Сохранить список файлов и папок в определённой директории в текстовый файл Az@zel Помощь студентам 5 10.03.2010 20:41
Переименовать файл из директории Алексей_C Общие вопросы Delphi 4 30.10.2008 10:48