powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Удалить нулевые байты из массива
20 сообщений из 20, страница 1 из 1
Удалить нулевые байты из массива
    #38375600
Students
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет всем.

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
using (StreamReader sr = new StreamReader(filename, Encoding.Default))
                {
                    while (!sb.ToString().Contains("stream"))
                        sb.Append(sr.ReadLine());

                    pdf += sb.ToString();
                    int current_pos = Convert.ToInt32(sr.BaseStream.Position);

                    FileStream fs = File.OpenRead(filename);
                    byte[] bytes = new byte[fs.Length];
                    fs.Read(bytes, current_pos, Convert.ToInt32(fs.Length) - current_pos);
                    fs.Close();
                }



у меня есть файл, я его читаю через streamreader.
всё, что находится между stream и endstream мне нужно запихнуть в массив bytes (так как там могут быть нечитаемые байты, я не могу в string запихивать).

Скажите, каким образом остановиться на endstream , когда я записываю в массив через FileStream?
...
Рейтинг: 0 / 0
Удалить нулевые байты из массива
    #38375615
Фотография buser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вариантов несколько... Например, изучить "передовой опыт канадских программистов"
...
Рейтинг: 0 / 0
Удалить нулевые байты из массива
    #38375645
carrotik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Students,

... еще один из вариантов - MemoryStream - у него есть указатель (Position) и метод CopyTo .. Прочитали исходный стрим до позиции - копируем в выходной, потом переместили указатель и т.д. ....
...
Рейтинг: 0 / 0
Удалить нулевые байты из массива
    #38375689
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Редкостный гавнокод, жуть...
...
Рейтинг: 0 / 0
Удалить нулевые байты из массива
    #38375741
Students
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
carrotikStudents,

... еще один из вариантов - MemoryStream - у него есть указатель (Position) и метод CopyTo .. Прочитали исходный стрим до позиции - копируем в выходной, потом переместили указатель и т.д. ....

ясно, спасибо
...
Рейтинг: 0 / 0
Удалить нулевые байты из массива
    #38375757
Students
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
carrotikStudents,

... еще один из вариантов - MemoryStream - у него есть указатель (Position) и метод CopyTo .. Прочитали исходный стрим до позиции - копируем в выходной, потом переместили указатель и т.д. ....

Но я ведь в MemoryStream не могу указать путь к файлу. Могу указать массив байт.

Мне сначала нужно в StreamReader перегнать PDF в массив байтов, а потом этот массив уже в MemoryStream?
...
Рейтинг: 0 / 0
Удалить нулевые байты из массива
    #38375778
carrotik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
StudentscarrotikStudents,

... еще один из вариантов - MemoryStream - у него есть указатель (Position) и метод CopyTo .. Прочитали исходный стрим до позиции - копируем в выходной, потом переместили указатель и т.д. ....

Но я ведь в MemoryStream не могу указать путь к файлу. Могу указать массив байт.

Мне сначала нужно в StreamReader перегнать PDF в массив байтов, а потом этот массив уже в MemoryStream?

..ну, примерно, только можно использовать FileStream
или так
http://stackoverflow.com/questions/6227373/how-to-open-a-file-in-memory
или так
http://mshahzadlatif.wordpress.com/2011/12/21/read-file-from-disk-into-memorystream-using-c-or-vb-net/
или еще как ...

..хотя вы бы, все-таки, подумали об общем подходе, может имеет смысл вообще генерировать ПДФ на сервере с помощью iTextSharp, а отдельные его компоненты (картинки, текст) хранить и пересылать отдельно в зависимости от версий редактирования ...
...
Рейтинг: 0 / 0
Удалить нулевые байты из массива
    #38375789
Students
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ясно, спасибо за ответы и за совет.

Я всё обдумаю.
...
Рейтинг: 0 / 0
Удалить нулевые байты из массива
    #38375875
Students
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
carrotikStudents,

... еще один из вариантов - MemoryStream - у него есть указатель (Position) и метод CopyTo .. Прочитали исходный стрим до позиции - копируем в выходной, потом переместили указатель и т.д. ....

Сделал, как вы сказали.

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
using (FileStream fs = File.OpenRead(filename))
                {
                    MemoryStream ms = new MemoryStream();
                    fs.CopyTo(ms);

                    var sw = new StreamWriter(ms, Encoding.Default);
                    sw.Flush();

                    ms.Position = 0;
                    var sr = new StreamReader(ms, Encoding.Default);

                    while (!sb.ToString().Contains("stream"))
                        sb.Append(sr.ReadLine());

                    pdf += sb.ToString();
                }



в MemoryStream position = 1024 всегда
...
Рейтинг: 0 / 0
Удалить нулевые байты из массива
    #38375895
Students
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я что-то неправильно сделал?
...
Рейтинг: 0 / 0
Удалить нулевые байты из массива
    #38375896
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всё. Я тебе об этом со вчерашнего дня тылдычу 14743397
...
Рейтинг: 0 / 0
Удалить нулевые байты из массива
    #38375908
Students
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУВсё. Я тебе об этом со вчерашнего дня тылдычу 14743397
я не для себя делаю. мне как сказали (вырезать из pdf всё, что между stream и endstream, то я и делаю)
...
Рейтинг: 0 / 0
Удалить нулевые байты из массива
    #38375951
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ты можешь делать хоть для инопланетян, это не имеет значение. Это не будет работать.
...
Рейтинг: 0 / 0
Удалить нулевые байты из массива
    #38375982
Фотография buser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Students, для того что бы учиться не нужно с разбегу бросаться на стену...
Код: c#
1.
BinaryReader pdfFile = new BinaryReader(new FileStream(filename, FileMode.Open, FileAccess.Read, FileShare.None), Encoding.UTF8);


ну и дальше понеслась душа в рай... посмотрите по ссылке чтоль...
хех... но поуму... это делается по другому... сам подход не оч...
...
Рейтинг: 0 / 0
Удалить нулевые байты из массива
    #38375993
Students
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ок, спасибо за ответы.
...
Рейтинг: 0 / 0
Удалить нулевые байты из массива
    #38376081
carrotik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Students,

...кстати, я сейчас ради интереса попробовал - так простой метод ReadAllText читает ПДФ-ки и не затыкивается ... может ларчик пиво просто открывалось? Пример на VB.NET - уж не обессудьте, си-шарп никак не складывается у меня ..

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
Imports System.IO
Module Module1

    Sub Main()
        ' Open file and store in String.
        Dim value As String = File.ReadAllText("D:\1sftp\img2165.pdf")
        Dim intPos As Integer = 0
        Dim intStream As Integer = 0
        Dim intEndStream As Integer = 0
        Do While intStream > -1 And intPos < value.Length
            intStream = value.IndexOf("stream", intPos)
            intEndStream = value.IndexOf("endstream", intPos)
            intPos = intEndStream + 9
            Console.WriteLine(intStream.ToString & " " & intEndStream.ToString)
        Loop
        Console.WriteLine(value.Length)

    End Sub

End Module
...
Рейтинг: 0 / 0
Удалить нулевые байты из массива
    #38376165
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
carrotik, попробуй это
...
Рейтинг: 0 / 0
Удалить нулевые байты из массива
    #38376173
carrotik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУcarrotik, попробуй это

попробовал

Код: sql
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.
C:\Users\.......\Release>readpdf.exe
675 1173
2436 19000
19182 19676
19861 20089
20271 20768
20953 21181
21363 21812
21997 22225
22407 22893
23078 23306
23488 23925
24110 24338
24520 24949
25134 25362
25544 26002
26187 26415
26597 27039
27224 27452
27634 28034
28219 28447
28629 29100
29285 29513
29855 30466
30531 30837
30919 107147
107564 107772
-1 -1
109411



.. вроде весь прочитал?
...
Рейтинг: 0 / 0
Удалить нулевые байты из массива
    #38376276
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И что мне с этим делать?
...
Рейтинг: 0 / 0
Удалить нулевые байты из массива
    #38376512
carrotik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУИ что мне с этим делать?

... не знаю .. автор хотел найти позции стримов в ПДФ ... что он будет с этим делать, и будет ли? ... велосипед как велосипед ...
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Удалить нулевые байты из массива
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]