Содержание
Вот простейшая Java- программа для построчного чтения файла в обратном порядке с использованием API-интерфейсов Java8. Попробуйте и дайте мне знать, если вы видите какие-либо проблемы с этим.
- Java-программа для обращения содержимого файла
- написать программу, которая заменяет каждую строку файла ее обратным
Я буду писать серию интервью Java, в которой вы найдете больше вопросов и ответов. Пожалуйста, следите за обновлениями для получения дополнительной информации .
В этом уроке мы рассмотрим следующие шаги:
- Мы будем читать файл
crunchify.txtкоторый находится на месте документа. Я использую Macbook Pro, поэтому, если вы используете другую ОС и ноутбук / рабочий стол, пожалуйста, измените путь к файлу в программе соответственноCrunchifyReverseLineReader.java - Сначала мы будем читать файл в простом порядке.
- Мы будем читать файл в обратном порядке.
Please note: Ниже программы по умолчанию удаляются все пустые строки из вывода в обратном порядке. Если вы хотите сохранить пустые строки, посмотрите на комментарий в самой программе.- Создать файл
CrunchifyReverseLineReaderTest.javaи скопируйте код снизу для проверки результата.
Java-код:
CrunchifyReverseLineReaderCore.java
Джава
|
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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
|
пакет crunchify. ком . учебные пособия ;
Импортировать Java. Ио. ByteArrayOutputStream ;
Импортировать Java. Ио. Файл ;
Импортировать Java. Ио. IOException ;
Импортировать Java. Ио. RandomAccessFile ;
Импортировать Java. Ио. UnsupportedEncodingException ;
Импортировать Java. Nio . ByteBuffer ;
Импортировать Java. Nio . каналы . FileChannel ;
/ **
* Прочитать файл от начала до конца
*
* @author Crunchify.com
* /
общественности учебный класс CrunchifyReverseLineReader {
частный статический окончательный ИНТ РАЗМЕР БУФЕРА знак равно 8192 ;
частный окончательный Канал FileChannel ;
частный окончательный строка кодирование ;
частный долго filePos ;
частный ByteBuffer buf ;
частный ИНТ bufPos ;
частный ByteArrayOutputStream baos знак равно новый ByteArrayOutputStream ( ) ;
частный RandomAccessFile RAF;
частный байт lastLineBreak знак равно '/ n' ;
общественности CrunchifyReverseLineReader ( файл файла ) бросает IOException {
это ( файл , ноль ) ;
}
общественности CrunchifyReverseLineReader ( Файловый файл , строка кодировка ) бросает IOException {
раф знак равно новый RandomAccessFile ( файл , р ) ;
канал знак равно раф . getChannel ( ) ;
FilePos знак равно раф . длина ( ) ;
это. кодирование знак равно кодирование ;
}
общественности недействительным закрыть ( ) бросает IOException {
раф . закрыть ( ) ;
}
общественности строка readLine ( ) бросает IOException {
байт с ;
в то время как ( правда ) {
если ( bufPos < 0 ) {
если ( filePos == 0 ) {
если ( Баос == ноль ) {
вернуть ноль ;
}
строка линия знак равно bufToString ( ) ;
BAOS знак равно ноль ;
вернуть линия ;
}
долго Начните знак равно Математика max ( filePos — BUFFER_SIZE , 0 ) ;
долго конец знак равно filePos ;
долго Len знак равно конец — начать ;
ЬиЕ знак равно канал . карта ( FileChannel . MapMode . READ_ONLY , начать , лен ) ;
bufPos знак равно ( int ) лен ;
FilePos знак равно начать ;
// Игнорируем пустые новые строки
с знак равно Buf . get ( — bufPos ) ;
если ( с == '/р' | | с == '/ n' )
в то время как ( bufPos > 0 && (c == '/ r' || c == '/ n')) {
bufPos—;
с знак равно Buf . получить ( bufPos ) ;
}
если ( ! ( с == '/р' | | с == '/ n' ) )
bufPos ++ ; // НОВАЯ ЛЕНА
}
/ *
* Это будет игнорировать все пустые новые строки.
* /
в то время как ( bufPos — > 0 ) {
с знак равно Buf . получить ( bufPos ) ;
если ( с == '/р' | | с == '/ n' ) {
// пропустить / r / n
в то время как ( bufPos > 0 && (c == '/ r' || c == '/ n')) {
c = buf.get (- bufPos);
}
// восстановить курсор
если ( ! ( с == '/р' | | с == '/ n' ) )
bufPos ++ ; // НОВАЯ ЛИНИЯ
вернуть bufToString ( ) ;
}
Баос . написать ( с ) ;
}
/ *
* Если вы не хотите игнорировать новую строку и хотели бы
* чтобы напечатать новую строку, используйте код ниже
* и прокомментируйте выше время цикла
while (bufPos—> 0) {
byte c1 = buf.get (bufPos);
if (c1 == '/ r' || c1 == '/ n') {
if (c1! = lastLineBreak) {
lastLineBreak = c1;
Продолжить;
}
lastLineBreak = c1;
return bufToString ();
}
baos.write (с1);
}
* /
}
}
частный строка bufToString ( ) бросает UnsupportedEncodingException {
если ( Баос . размер ( ) == 0 ) {
вернуть ;
}
байт [ ] байтов знак равно Баос . toByteArray ( ) ;
за ( int я знак равно 0 ; я < байт. длина / 2 ; я ++ ) {
байт T знак равно байты [ i ] ;
байт [ я ] знак равно байты [ байты . длина — я — 1 ] ;
байты [ байты . длина — я — 1 ] знак равно т ;
}
Баос . сброс ( ) ;
если ( кодировка ! знак равно ноль )
вернуть новый Строка ( байты , кодирование ) ;
еще
вернуть новый Строка ( байты ) ;
}
}
|
Обновлен код для удаления пустых строк из файла согласно комментарию от francesco.
Другие должны прочитать статью: https://crunchify.com/why-and-for-what-should-i-use-enum-java-enum-examples/
Теперь давайте проверим это. Создать тестовый файл.
CrunchifyReverseLineReaderTest.java
Джава
|
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
|
пакет crunchify. ком . учебные пособия ;
Импортировать Java. Ио. BufferedReader ;
Импортировать Java. Ио. Файл ;
Импортировать Java. Ио. FileReader ;
Импортировать Java. Ио. IOException ;
/ **
* @author Crunchify.com
* /
общественности учебный класс CrunchifyReverseLineReaderTest {
@SuppressWarnings ( ресурс )
общественности статический недействительным main ( Строка [ ] аргументы ) бросает IOException {
/ *
* Если вы хотите иметь пустой файл и хотите добавить несколько строк, используйте приведенный ниже код
*
* Файл file = новый файл (/ Users / appshah / Documents / crunchify.txt); RandomAccessFile raf = новый RandomAccessFile (файл,
* rw); for (int i = 0; i <= 10; i ++) {// Добавление строки от 1 до 10 //raf.writeBytes(Adding Line + i + / n ); }
* raf.close ();
*
* /
/ *
* Тест — 1: В этом уроке мы прочитаем существующий файл crunchify.txt
* Чтение файла в простом порядке
* /
FileReader logReader знак равно новый FileReader ( /Users/appshah/Documents/crunchify.txt ) ;
Буфер BufferedReader знак равно новый BufferedReader ( logReader ) ;
Система. вне. println ( ~~~~~~~~~~~~~~~~~~~ Простой способ чтения файла в Java без обращения ~~~~~~~~~~~~~~~~~~ / n ) ;
за ( Строка строка 1 знак равно буфер . readLine ( ) ; строка 1 ! знак равно ноль ; строка 1 знак равно буфер . readLine ( ) ) {
Система. вне. println ( строка 1 ) ;
}
/ *
* Тест — 2: В этом уроке мы прочитаем существующий файл crunchify.txt
* Чтение файла в обратном порядке
* /
Файл файл знак равно новый Файл ( /Users/appshah/Documents/crunchify.txt ) ;
CrunchifyReverseLineReader читатель знак равно новый CrunchifyReverseLineReader ( файл , UTF-8 ) ;
строка линия ;
Система. вне. print ( / n ~~~~~~~~~~~~~~~~~~~ Чтение файла в обратном порядке ~~~~~~~~~~~~~~~~~~~ / н / н ) ;
в то время как ( ( строка знак равно читатель. readLine ( ) ) ! знак равно ноль ) {
Система. вне. println ( строка ) ;
}
}
}
|
Note:Файл crunchify.txt имеетtotal 11 linesвключая 1 пустую строку между ними, как вы видите в результате ниже.
Выход:
|
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
|
~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ Простой способ прочитать файл в Ява без реверса ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
—— Crunchify Учебники Старт ——
как Устранить неполадки в более высоком процессоре , объем памяти & Использование процесса ?
верхний 7 Советы по Speed Up WordPress & Повысить производительность
Подробное руководство по созданию Установить SSL на сайте WordPress
Список всех советов Genesis WordPress Framework
Самый простой Hello World Spring MVC Tutorial И Учебник по JDBC MySQL
NEW Запустите встроенный HTTP — сервер Джерси во время запуска приложения Java
NEWTOP 10 Java Интервью Вопросы Ответы
Файл свойств Java : как Читай Конфиг . Свойства Значения В Java ?
—— Crunchify Учебники Конец ——
~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ чтение файл в Обратный порядок ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
—— Crunchify Учебники Конец ——
Файл свойств Java : как Читай Конфиг . Свойства Значения В Java ?
NEWTOP 10 Java Интервью Вопросы Ответы
NEW Запустите встроенный HTTP — сервер Джерси во время запуска приложения Java
Самый простой Hello World Spring MVC Tutorial И JDBC MySQL Tutorial
Список всех советов Genesis WordPress Framework
Подробное руководство по созданию Установить SSL на сайте WordPress
верхний 7 Советы по Speed Up WordPress & Повысить производительность
как Устранить неполадки в более высоком процессоре , объем памяти & Использование процесса ?
—— Crunchify Учебники Старт ——
|
0.00 (0%) 0 votes








