Loading...
kokibg3 avatar kokibg3 12 Точки

Проблем със задача No 3 от Java Streams Homework

Здравейте колеги,

В задачата се изисква файла да бъде презаписан.Открих това ,че в конструктора на FileWriter като втори параметър трябва да подадеш false за да презаписваш а не да append-ваш но явно нещо друго не правя както трябва.Струва ми се че правя нещо като infinite-loop защото аз хем чета хем пиша върху file и очаквам някога (line = bR.readLine()) == null. След като стартирам програмата цялата информация от txt file се изтрива и програмата преключва процеса си.

тук

Тагове:
0
Java Advanced 20/03/2016 08:23:44
AntonPortenov avatar AntonPortenov 102 Точки

И аз искам да чуя коментари на по-опитни колеги отбосно презаписване на редове и думи директно.

Иначе аз съм я направил с един stringbuilder за буфер където съхранявам и после записвам на ново. 

Append('\n') за нов ред не работи. Използвай system.lineseparator()

0
kokibg3 avatar kokibg3 12 Точки

Ами да!!! Първо съхраняваш а след това презаписваш.Не като мене чета и презаписвам.

Ето как го поправих

1
20/03/2016 10:12:47
AntonPortenov avatar AntonPortenov 102 Точки

Когато отвориш файла всичко ли ти е на един ред или е на 3 реда? Защото при мен '\n' не работеше

0
IskrenPenev avatar IskrenPenev 177 Точки

И при мен не се получи да чета и да презаписвам веднага.

В случая може първо да прочетеш текста от файла с BufferedFileReader. След това аз лично ползвам фукнциите на File - .getParentFile(), .delete  и .renameTo, като междувременно  записвам вече редактирания текст в файл със същото име с едно .tmp накрая. Когато всичко е прочетено, изтривам оригиналния файл, а този, в който съм зпаисавал го преименувам.

Това тук е моето решение: http://pastebin.com/VUWsvrKE

Edit: това мисля че е задача № 2, №3 е тази с броенето на гласни/съгласни :)

0
20/03/2016 10:46:37
baxlash avatar baxlash 31 Точки

Това е моят варинт на тази задача: цък

Аз изполвам PrintWriter, за да пиша във файла, защото предлага по-добро форматиране на текста.

0
Nick_89 avatar Nick_89 2 Точки

Колега обаче в условието се иска да презапишем текста UpperCase върху същия файл, а не в друг. Да се записва в друг файл не проблем. Опитах да преименувам новия файл, а стария да го изтрия, но нещо не ми се получава (функциите file.renameTo() & file.delete()). Ако имаш някакви идеи.

0
IskrenPenev avatar IskrenPenev 177 Точки

новия ти файл има .tmp разширение и посочил ли си, че новия ти файл е наследник на основния ?

File path = new File("resources/AllCapitals/lines.txt");
        File finalPath = new File (path + ".tmp");
        finalPath.getParentFile().mkdirs();

ако последния ред липсва, преименуването няма да ти се получи

погледни решението ми : http://pastebin.com/VUWsvrKE

0
Nick_89 avatar Nick_89 2 Точки

До IskrenPenev

Колега, много благодаря за помощта. Да си призная,получи се малко като копиране на кода - 2 реда, но много важни(което никак не е хубаво). Относно функцията file.delete() - малко ми е странна. От една страна връща boolean, от друга трие файла, т.е. ако успее да изтрие файла, преименува другия, ако не - не. Правилно ли съм разбрал.

Поздрави!

0
mbeleva88 avatar mbeleva88 69 Точки

Колеги, ползвайте try with resources, тъй като затварянето на файловете става автоматично.
Ако не сте затворили файла няма как да презаписвате в него, тъй като е все още отворен.

2
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.