Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.56/34: Рейтинг темы: голосов - 34, средняя оценка - 4.56
-27 / 7 / 1
Регистрация: 19.07.2011
Сообщений: 627
1

Путь к файлу

03.12.2016, 22:02. Показов 6364. Ответов 22
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
помогите пожалуйста имеется вполне работоспособный код (собирается) но неясно что куда помещать и где забирать. помещал текстовый файл в папку с проектом но безрезультатно. код взят отсюда http://stackoverflow.com/quest... est-method
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
 
namespace ConsoleApplication125
{
    class Program
    {
 
        static void Main(string[] args)
        {
        }
 
           public void SplitFiles(int[] newFiles, string filePath, int processorCount)
{
    using (StreamReader Reader = new StreamReader(filePath))
    {
        for (int i = 0; i < newFiles.Length; i++)
        {
            string extension = System.IO.Path.GetExtension(filePath);
            string temp = filePath.Substring(0, filePath.Length - extension.Length)
                              + i.ToString();
            string FilePath = temp + extension;
 
            if (!File.Exists(FilePath))
            {
                for (int x = 0; x < newFiles[i]; x++)
                {
                    DataWriter(Reader.ReadLine(), FilePath);
                }
            }
            else
            {
                return;
            }
        }
    }
}
 
public void DataWriter(string rowData, string filePath)
{
    bool appendData = true;
    using (StreamWriter sr = new StreamWriter(filePath, appendData))
    {
        {
            sr.WriteLine(rowData);
        }
    }
}
                
            }
 
        }
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.12.2016, 22:02
Ответы с готовыми решениями:

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

Путь к файлу
Здесь берётся из ресурсов. Нужно изменить на путь к файлу windows. using (var img = new...

Путь к файлу
Здравствуйте. С помощью string trtr= System.Windows.Forms.Application.ExecutablePath; получаю путь...

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

22
1 / 1 / 4
Регистрация: 08.05.2015
Сообщений: 6
04.12.2016, 10:50 2
Лучший ответ Сообщение было отмечено KotovichMX как решение

Решение

Этот код ничего не делает так как в нем лишь определены методы. Необходимо создать экземпляр класса Program и вызвать метод SplitFiles в методе main.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
        static void Main(string[] args)
        {
            Program n = new Program();
            int[] g = { 1, 2, 3 };
 
            n.SplitFiles(g, @"c:\1\2.txt", 1);
        }
               public void SplitFiles(int[] newFiles, string filePath, int processorCount)
    {
        using (StreamReader Reader = new StreamReader(filePath))
        {
            for (int i = 0; i < newFiles.Length; i++)
            {
                string extension = System.IO.Path.GetExtension(filePath);
                string temp = filePath.Substring(0, filePath.Length - extension.Length)
                                  + i.ToString();
                string FilePath = temp + extension;
 
                if (!File.Exists(FilePath))
                {
                    for (int x = 0; x < newFiles[i]; x++)
                    {
                        DataWriter(Reader.ReadLine(), FilePath);
                    }
                }
                else
                {
                    return;
                }
            }
        }
    }
 
    public void DataWriter(string rowData, string filePath)
    {
        bool appendData = true;
        using (StreamWriter sr = new StreamWriter(filePath, appendData))
        {
            {
                sr.WriteLine(rowData);
            }
        }
    }
 
}
    }
Только файл нужно создать заранее.
0
-27 / 7 / 1
Регистрация: 19.07.2011
Сообщений: 627
04.12.2016, 13:38  [ТС] 3
спасибо за ответ сборка прошла успешно без исключений но неясно с результатом , должен ли он генерироваться в txt ? я в рабочей директории его не наблюдаю.

Добавлено через 6 минут
судя по коду это не предусмотрено .. как прописать выход в текстовый файл?
0
1 / 1 / 4
Регистрация: 08.05.2015
Сообщений: 6
04.12.2016, 14:14 4
Файлы будут создаваться в той же директории что и изначальный файл. На его основе и будут созданы последующие файлы, в которые будут прописаны строки из первого файла. Отличаться будут добавлением цифры в конце имени файла.
0
-27 / 7 / 1
Регистрация: 19.07.2011
Сообщений: 627
04.12.2016, 14:21  [ТС] 5
нда действительно. совсем я постарел. спасибо. все вопросы исчерпаны.
0
-27 / 7 / 1
Регистрация: 19.07.2011
Сообщений: 627
04.12.2016, 20:15  [ТС] 6
не так не все если не трудно подскажите почему кирилицу в бан и как это исправить.
Миниатюры
Путь к файлу  
0
-27 / 7 / 1
Регистрация: 19.07.2011
Сообщений: 627
04.12.2016, 20:23  [ТС] 7
да бог с ней с кириллицей меня больше волнует массив байт. на него вапще никакой реакции.
Миниатюры
Путь к файлу  
0
-27 / 7 / 1
Регистрация: 19.07.2011
Сообщений: 627
04.12.2016, 20:26  [ТС] 8
скрипт почему то фигашит все в первую из трёх а остальные оставляет голыми.
0
1150 / 742 / 483
Регистрация: 21.01.2014
Сообщений: 1,903
04.12.2016, 20:55 9
А вы, собственно, разобрались что метод делает? Какие параметры ему передаете? Вот в этот массивint[] newFiles нужно передать массив, который содержит количество строк, которые необходимо скопировать в соответствующий файл. То есть, если передать {1, 2, 3}, то в первый файл будет скопирована одна строка, во второй - две, а в третий - три.
0
-27 / 7 / 1
Регистрация: 19.07.2011
Сообщений: 627
04.12.2016, 21:04  [ТС] 10
ну это я догадался а как поделить строку что бы без косяков?
0
1150 / 742 / 483
Регистрация: 21.01.2014
Сообщений: 1,903
04.12.2016, 22:06 11
Какую строку делить? И какие у вас косяки?
0
-27 / 7 / 1
Регистрация: 19.07.2011
Сообщений: 627
04.12.2016, 22:33  [ТС] 12
текстовый файл содержит всего одну строку длиной 1076813 символов . думаю можно что то придумать что бы это безобразие поделить на части.
0
1150 / 742 / 483
Регистрация: 21.01.2014
Сообщений: 1,903
04.12.2016, 22:37 13
Вот бы узнать вашу задачу. Но можно, конечно, подбирать код угадыванием. Это вам подходит Разбить файл на n частей записать в n файлов?
0
-27 / 7 / 1
Регистрация: 19.07.2011
Сообщений: 627
04.12.2016, 22:41  [ТС] 14
чувак да ты гений.
0
Lexeq
04.12.2016, 22:50
  #15

Не по теме:

Вбил 4 слова в гугл и уже гений, в удивительное время живем.

0
-27 / 7 / 1
Регистрация: 19.07.2011
Сообщений: 627
04.12.2016, 22:55  [ТС] 16
я двое суток ковырялся в тырнете чего тока не перепробовал. н-да код по ссылке работает идеально.
Миниатюры
Путь к файлу  
0
-27 / 7 / 1
Регистрация: 19.07.2011
Сообщений: 627
04.12.2016, 23:09  [ТС] 17
гений может ты подскажешь как переделать код что бы поток байт пилило на части... то есть не из диска где-то а в процессе.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
 
namespace ConsoleApplication129
{
    class Program
    {
        static void Main(string[] args)
        {
            long parts = 5L; // Кол-во частей
            using (FileStream fs = new FileStream("z:\\1\\1.txt", FileMode.Open, FileAccess.Read))
            {
                long partSz = fs.Length / parts; // Размер одной части
                byte[] buff;
                bool mod = fs.Length % parts == 0; // Все части одного размера
                for (int i = 0; i < parts; i++)
                {
                    using (FileStream pStream = new FileStream(string.Format("z:\\1\\{0}.part", i), FileMode.Create, FileAccess.Write))
                    {
                        buff = new byte[i == parts - 1 && !mod ? fs.Length - (parts - 1) * partSz : partSz];
                        fs.Read(buff, 0, buff.Length);
                        pStream.Write(buff, 0, buff.Length);
                    }
                    buff = null;
                }
            }
        }
    }
}
код взят отсюда Разбить файл на n частей записать в n файлов

Добавлено через 1 минуту
ну и делало дублёж скидывая на диск.

Добавлено через 4 минуты
допустим прорабатываем изображение
C#
1
2
byte[] image = File.ReadAllBytes(@"C:\1.bmp");
            File.WriteAllText(@"z:\101.txt", string.Join(" ", image.Select(i => i.ToString("X2")).ToArray()));
0
1150 / 742 / 483
Регистрация: 21.01.2014
Сообщений: 1,903
04.12.2016, 23:18 18
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
        /// <param name="stream">Поток байт, не из диска где-то а в процессе.</param>
        /// <param name="parts">Количество частей.</param>
        /// <param name="path">Путь к папке, куда будут записываться файлы.</param>
        static void Foo(Stream stream, long parts, string path)
        {
            long partSz = stream.Length / parts; // Размер одной части
            byte[] buff;
            bool mod = stream.Length % parts == 0; // Все части одного размера
            for (int i = 0; i < parts; i++)
            {
                using (FileStream pStream = new FileStream(Path.Combine(path, "file_part" + i), FileMode.Create, FileAccess.Write))
                {
                    buff = new byte[i == parts - 1 && !mod ? stream.Length - (parts - 1) * partSz : partSz];
                    stream.Read(buff, 0, buff.Length);
                    pStream.Write(buff, 0, buff.Length);
                }
                buff = null;
            }
        }
0
-27 / 7 / 1
Регистрация: 19.07.2011
Сообщений: 627
05.12.2016, 00:06  [ТС] 19
собирается да но не догнал что к чему. как зацепить поток после чтения
C#
1
byte[] image = File.ReadAllBytes(@"C:\1.bmp")
?
0
1150 / 742 / 483
Регистрация: 21.01.2014
Сообщений: 1,903
05.12.2016, 00:29 20
Я все еще не знаю, что вы хотите. File.ReadAllBytes возвращает массив байт, а не поток. Поток можно получить через File.Open например. Но тогда, по сути, мы вернемся к первоначальному коду. И вы вроде хотели не с диска читать, причем тут тогда это?
Цитата Сообщение от KotovichMX Посмотреть сообщение
File.ReadAllBytes(@"C:\1.bmp")
Давайте вы подумаете, решите что вам надо, сформулируете эту задачу, и напишите сюда. Это очень бы помогло и вам, и желающим вам помоч.
0
05.12.2016, 00:29
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.12.2016, 00:29
Помогаю со студенческими работами здесь

Путь к файлу
При создании в файла, можно ли сделать что бы при вводе чего кроме пути, выводило ошибку. То есть...

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

Относительный путь к файлу
У меня есть папка &quot;Аутентификация&quot; на компьютере. В ней лежат папки А и Б, каждая из которых...

Вывести путь к файлу
написать класс на C# вывода пути к исполняемому файлу нашей программы. Буду признателен если...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru