Вывод содержимого файла
Можете помочь сделать так, чтобы если text совпадает со string , то вывести содержимое файла, которое совпадает с text . Вот целый код(наверняка в нем есть ошибки,если есть помогите исправить):
import java.io.File; import java.io.FileReader; import java.io.IOException; import java.io.PrintWriter; import java.util.ArrayList; import java.util.List; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class servlet extends HttpServlet < /** * */ private static final long serialVersionUID = 1L; public static ListgetFileNames(File directory, String extension) < Listlist = new ArrayList(); File[] total = directory.listFiles(); for (File file : total) < if (file.getName().endsWith(extension)) < list.add(file.getName()); >if (file.isDirectory()) < ListtempList = getFileNames(file, extension); list.addAll(tempList); > > return list; > @SuppressWarnings("resource") protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException < request.setCharacterEncoding("utf8"); String myName = request.getParameter("text"); Listfiles = getFileNames(new File("C:\\Users\\vany\\Desktop\\test"), "txt"); for (String string : files) < if (myName.equals(string)) < try < File file = new File("C:\\Users\\vany\\Desktop\\test\\" + string); FileReader reader = new FileReader(file); int b; PrintWriter writer = response.getWriter(); writer.print(""); writer.print(""); writer.print("HelloWorld "); writer.print(""); writer.write(""); while((b = reader.read()) != -1) < writer.write((char) b); >writer.write(""); writer.print(""); writer.print(""); > catch (Exception ex) < System.exit(0); >> > > >
Просто,можете ,пожалуйста,проверить ошибки в коде,а то пока не выводит ничего,и сказать,что куда подставить) Тут ,по моему,надо что-то с этим:
catch (Exception ex)
И что-то с этим:
FileReader reader = new FileReader(file);
Может в программе надо что-то местами поменять,или заменить writer.write на writer.print?А и можно как-то код сократить?
Как вывести содержимое файла Linux? Открываем текстовый файл в Linux
Если вы работаете с операционной системой Linux, вы должны уметь быстро и правильно просматривать содержимое Linux-файлов, используя терминал. В этой статье мы изучим команды, посредством которых можно открывать текстовые файлы Linux. И поговорим о том, как следует ими пользоваться.
Просмотр текстового файла в Linux полностью
Чтобы вывести содержимое всего текстового файла, в Linux используют команду cat. Она отлично походит для вывода небольших текстовых файлов, к примеру, конфигурационных файлов. Синтаксис прост:
cat [опции]Представьте, что надо посмотреть содержимое файла с названием myfile.txt:
cat myfile.txtТакже можно вместо имени прописать адрес (путь) к файлу:
cat /etc/passwdЕсли нужно посмотреть несколько файлов сразу, это тоже не вызовет проблем:
Кроме того, при просмотре текстового файла в Linux мы можем отобразить номера строк. Для этого потребуется всего лишь использовать опцию -n :
cat -n file.txt
Команда nl функционирует аналогично команде cat с опцией -n , выводя номера строк в столбце слева.
nl file.txtПри необходимости вы можете сделать так, чтобы при выводе текстового файла в конце каждой строки отображался символ $ :
cat -e testВывод будет следующим:
hello everyone, how do you do?$ $ Hey, am fine.$Кроме cat, для вывода содержимого текстового файла в Linux используется команда tac. Её разница заключается в том, что она выводит содержимое файла в обратном порядке.
Как просмотреть файл в Linux с прокруткой
Бывает, что текстовый файл большой, поэтому его содержимое не помещается в один экран. Использовать в таком случае cat неудобно, зато есть less. Синтаксис у неё такой же:
lessКоманда less обеспечит постраничный просмотр, что очень удобно. При этом: 1) less позволяет просматривать текст по определённому числу строк, для чего достаточно указать - (тире или минус) и количество строк:
less -5 myfile.txt2) можно начать просмотр с конкретной строки в файле, указав + (плюс) и номер строки, с которой хотим начать чтение:
less +5 myfile.txtОткрыв текст, мы можем управлять его просмотром:
Просматриваем начало или конец файла в Linux
Порой, нам не нужно выводить содержимое всего файла и мы хотим, к примеру, посмотреть лишь несколько строчек лога. Такое часто бывает, если мы подозреваем, что в начале или в конце конфигурационного файла есть ошибки. Для решения данного вопроса у нас существуют команды head и tail (как вы уже догадались, это голова и хвост).
Команда head по умолчанию показывает лишь 10 первых строчек в текстовом файле в Linux:
head /etc/passwdВот, что мы увидим:
root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/bin/false daemon:x:2:2:daemon:/sbin:/bin/false adm:x:3:4:adm:/var/adm:/bin/false lp:x:4:7:lp:/var/spool/lpd:/bin/false sync:x:5:0:sync:/sbin:/bin/sync shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin:/sbin/halt news:x:9:13:news:/var/spool/news:/bin/false uucp:x:10:14:uucp:/var/spool/uucp:/bin/falseКстати, тут мы тоже можем открыть сразу несколько текстовых файлов в Linux одновременно. Вот просмотр сразу двух файлов:
head /etc/passwd /etc/shadowЕсли же вас не интересуют все 10 строчек, то, как и в случае с cat, можно использовать опцию –n , цифрой указывая число строк к выводу:
head -n5 /var/log/emerge.logВ итоге мы вывели только пять строк:
1394924012: Started emerge on: Mar 15, 2014 22:53:31 1394924012: *** emerge --sync 1394924012: === sync 1394924012: >>> Synchronization of repository 'gentoo' located in '/usr/portage'. 1394924027: >>> Starting rsync with rsync://212.113.35.39/gentoo-portageПо правде говоря, букву n можно и не использовать, достаточно просто передать цифру:
head -5 /var/log/emerge.logКстати, выводить содержимое текстового файла в Linux можно не построчно, а посимвольно. Давайте зададим число символов, которое нужно вывести (используем опцию -с ):
head -c45 /var/log/emerge.logИтак, выводим 45 символов:
1394924012: Started emerge on: Mar 15, 2014 2Не верите, что их действительно 45? Проверить можно командой wc:
head -c45 /var/log/emerge.log | wc -c 45С «головой» разобрались, давайте поговорим про «хвост». Очевидно, что команда tail работает наоборот, выводя десять последних строк текстового Linux-файла:
tail /var/log/emerge.logКоличество строк при выводе тоже можно менять. Однако в tail есть такая полезная опция, как -f . С её помощью содержимое текстового файла будет постоянно обновляться, в результате чего вы станете видеть изменения сразу (постоянно открывать и закрывать файл не придётся). Это весьма удобно, если вы хотите просматривать логи Linux в реальном времени:
tail -f /var/log/emerge.logПросматриваем содержимое файла по шаблону в Linux
На практике зачастую нам необходим не весь текстовый файл, а лишь несколько строк из него. Используя grep, мы можем вывести Linux-файл, предварительно отсеяв лишнее:
grep опции шаблон файлКоманду можно применять и совместно с cat:
cat файл | grep опции шаблонДавайте выведем из лога лишь предупреждения:
cat /var/log/Xorg.0.log | grep WW(WW) warning, (EE) error, (NI) not implemented, (??) unknown. [ 85.839] (WW) Hotplugging is on, devices using drivers 'kbd', 'mouse' or 'vmmouse' will be disabled. [ 85.839] (WW) Disabling Keyboard0 [ 85.839] (WW) Disabling Mouse0 [ 87.395] (WW) evdev: A4TECH USB Device: ignoring absolute axes.Есть и ряд полезных опций: -A , -B , -C . Допустим, нам надо выполнить вывод двух строк после вхождения enp2s0:
$ ifconfig | grep -A2 enp2s0enp2s0: flags=4163 mtu 1500 inet 192.168.1.2 netmask 255.255.255.0 broadcast 192.168.1.255 inet6 fe80::beae:c5ff:febe:8bb7 prefixlen 64 scopeid 0x20
А теперь, то же самое, но до вхождения loop:
ifconfig | grep -B2 loopinet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10 loop txqueuelen 0 (Local Loopback)Можно по две строки как до, так и после loop:
ifconfig | grep -C2 loopinet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10 loop txqueuelen 0 (Local Loopback) RX packets 9810 bytes 579497 (565.9 KiB) RX errors 0 dropped 0 overruns 0 frameПросматриваем Linux-файл в сжатом виде
Порой, в системе встречаются текстовые файлы в сжатом виде и формате gz. Это могут быть конфигурационные файлы ядра либо логи программ. Открыть такие файлы можно тоже через терминал, не прибегая к распаковке. Для этого существует множество аналогов вышеназванных утилит с той лишь разницей, что они имеют приставку z: zgerp, zegrep, zcat, zless.
Давайте откроем сжатый файл в Linux для просмотра:
zcat test.gzИли выполним просмотр сжатого файла с прокруткой:
zless testВот, пожалуй, и всё. Теперь вы точно в курсе, как правильно открывать и просматривать текстовые файлы в терминале Linux.