Главная страница

Презентация по Программированию. Книга Программирование на Java для начинающих


Скачать 4.47 Mb.
НазваниеКнига Программирование на Java для начинающих
АнкорПрезентация по Программированию
Дата03.02.2022
Размер4.47 Mb.
Формат файлаpdf
Имя файла638767.pdf
ТипКнига
#350143
страница12 из 18
1   ...   8   9   10   11   12   13   14   15   ...   18
File в действительности файл не создается, а происходит лишь представле- ние конкретного элемента файловой системы.
Как только объект File, представляющий конкретный файл системы, создан, можно вызывать его методы для работы с файлом. Наиболее используемые и полезные методы объекта File с кратким их описани- ем перечислены в таблице ниже.
Метод
Возвращает
exists()
true, если файл существует, false — в про- тивном случае
getName()
имя файла в виде строки
length()
размер файла в байтах (тип long )
createNewFile()
true, если удалось создать новый файл
delete()
true в случае успешного удаления файла
renameTo(File)
true в случае успешного переименования файла
list()
массив имен файлов или каталогов (стро- кового типа)
На заметку
Имя файла, указанного в качестве аргумента для конструктора, должно быть заключено в кавычки.

119
1. Создайте новую программу, которая импортирует функции всех классов пакета java.io.
import java.io.* ;
2. Добавьте класс с именем ListFiles, содержащий стандартный ме- тод main.
class
ListFiles
{
public static void main( String[] args ) { }
}
3. Внутри фигурных скобок главного метода добавьте оператор, соз- дающий объект File для каталога с именем data.
File dir = new File( "data" ) ;
4. Добавьте оператор
if
для вывода имен всех файлов в данном ката- логе либо вывода сообщения в случае, если каталог пустой.
if ( dir.exists() )
{
String[] files = dir.list() ;
System.out.println( files.length + " файлов найдено..." ) ;
for ( int i = 0 ; i < files.length ; i++ )
{
System.out.println( files[i] ) ;
}
}
else
{ System.out.println( "Каталог не найден." ) ;
5. Сохраните программу под именем ListFiles.java внутри каталога
data, содержащего несколько файлов, затем скомпилируйте и за- пустите; вы увидите перечисленные имена файлов в качестве вы- вода.
JAVA
ListFiles.java

7. Импор
тирование ф
ункций
120
Чтение консольного ввода
Пакет java.io позволяет в программах на языке Java читать дан- ные, вводимые пользователем в командной строке. Подобно объек- ту System.out, отправляющему вывод в командную строку, объект
System.in
можно использовать для чтения из командной строки при помощи объекта InputStreamReader. Вводимые данные читаются по- байтно, затем конвертируются в целочисленные значения, представ- ляющие значения символов в формате Unicode.
Для того чтобы прочитать целую строку вводимого текста, метод
readLine()
объекта BufferedReader читает символы, декодированные при помощи объекта InputStreamReader. Данный метод следует вызы- вать внутри блока операторов try catch, чтобы перехватывать исклю- чения IOException (исключения, вызванные вводом-выводом).
Обычно метод readLine() заносит введенные данные в строковую пе- ременную для следующей обработки в программе.
1. Создайте новую программу, которая импортирует функциональ- ность всех классов. java.io
import java.io.* ;
2. Добавьте класс с именем ReadString, содержащий стандартный ме- тод main.
class
ReadString
{
public static void main( String[] args ) { }
}
3. Внутри фигурных скобок главного метода добавьте оператор для вывода сообщения, предлагающего пользователю ввести данные.
System.out.print( "Введите название данной книги: " ) ;
4. Добавьте оператор, создающий объект InputStreamReader, позво- ляющий читать вводимые с командной строки данные.
InputStreamReader isr =
new InputStreamReader( System.in ) ;
5. Создайте объект BufferedReader для чтения декодированного ввода .
BufferedReader buffer = new BufferedReader( isr ) ;
JAVA
ReadString.java

121
6. Объявите и проинициализируйте пустую строковую переменную, в которой будет сохраняться ввод.
String input = "" ;
7. Добавьте блок операторов try catch, в котором будет происходить чтение данных, вводимых из командной строки, и сохранение их в переменной.
try
{
input = buffer.readLine() ;
buffer.close()
;
}
catch ( IOException e )
{
System.out.println( "Произошла ошибка ввода" ) ;
}
8. Выведите сообщение, включающее сохраненное значение ввода.
System.out.println( "\nСпасибо, вы читаете " + input ) ;
9. Сохраните программу под именем ReadString.java, затем скомпили- руйте и запустите.
10. Введите запрашиваемый текст, нажмите клавишу Enter, и вы уви- дите выводимое сообщение, содержащее этот текст.
Совет
Хорошей практикой явля- ется вызов метода close() объекта BufferedReader, если он больше не нужен.

7. Импор
тирование ф
ункций
122
Чтение файлов
Пакет java.io содержит класс с именем FileReader, который специ- ально предназначен для чтения текстовых файлов. Он является под- классом класса InputStreamReader, который используется для чтения консольного ввода и преобразует поток байтов в целые числа, пред- ставляющие символы в формате ЮНИКОД.
Объект FileReader создается при помощи ключевого слова new, а так- же имени файла, из которого нужно читать, в качестве аргумента. Ар- гумент может включать полный путь к файлу за пределами каталога, где расположена программа.
Для эффективного чтения текста строка за строкой используется метод
readLine()
объекта BufferedReader, который читает символы, декоди- рованные объектом FileReader.
Данный метод следует вызывать внутри блока try catch для перехвата возможных исключений ввода-вывода.
Для того чтобы прочитать все строки текстового файла, в цикле вы- зывается метод readLine(). В конце файла он возвратит значение null, которое можно использовать для выхода из цикла.
1. Откройте простой текстовый редактор, скажем, Блокнот (Notepad), и введите несколько строк текста, например знаменитую фразу
Оскара Уайльда из произведения «Баллада Редингской тюрьмы».
2. Сохраните текстовый файл под именем oscar.txt, затем создайте но- вую программу, которая импортирует функции всех классов паке- та java.io.
import java.io.* ;
3. Добавьте класс с именем ReadFile, содержащий стандартный ме- тод main.
class
ReadFile
{ public static void main( String[] args ) { } }

123
4. Внутри фигурных скобок главного метода добавьте блок операто- ров try catch.
try
{
}
catch ( IOException e )
{
System.out.println( "Произошла ошибка чтения" ) ;
}
5. Внутри фигурных скобок блока try добавьте оператор для созда- ния объекта FileReader.
FileReader file = new FileReader( "oscar.txt" ) ;
6. Создайте объект
BufferedReader
для чтения файла.
BufferedReader buffer = new BufferedReader( file ) ;
7. Объявите и проинициализируйте пустую строковую переменную для хранения строки текста.
String line = "" ;
8. Добавьте цикл для чтения в переменную содержимого текстового файла, а также для вывода всех строк текста.
while ( ( line = buffer.readLine() ) != null )
{
System.out.println( line ) ; }
9. Не забудьте закрыть объект BufferedReader, поскольку он больше не нужен.
buffer.close()
;
10. Сохраните программу под именем ReadFile.java рядом с текстовым файлом, затем скомпилируйте и запустите.
На заметку
Имя текстового файла, ука- занного в качестве аргумен- та для FileReader, должно быть заключено в кавычки.

7. Импор
тирование ф
ункций
124
Запись файлов
В пакете java.io классы FileReader и BufferedReader, использующие- ся для чтения текстовых файлов, имеют аналоги с именами FileWriter и BufferedWriter, которые можно использовать для записи текстовых файлов.
Объект FileWriter создается с использованием ключевого слова new и принимает имя файла, в который нужно производить запись, в ка- честве аргумента. Аргумент может включать полный путь к файлу за пределами каталога, в котором расположена программа.
Объект BufferedWriter создается с использованием ключевого слова
new
и принимает в качестве аргумента имя объекта FileWriter. После этого при помощи метода write объекта BufferedWriter можно запи- сывать текст, в котором строки разделяются вызовом метода newLine().
Эти методы следует располагать внутри блока операторов try catch для перехвата возможных исключений ввода-вывода.
Если файл с указанным именем уже существует, то метод write() ста- нет перезаписывать содержимое файла, в противном случае будет соз- даваться новый файл с этим именем, в который станет записываться содержимое.
1. Создайте новую программу, которая импортирует функции всех классов пакета java.io.
import java.io.* ;
2. Добавьте класс с именем WriteFile, содержащий стандартный ме- тод main.
class
WriteFile
{
public static void main ( String[] args ) { }
}
3. Внутри фигурных скобок главного метода добавьте блок операто- ров try catch.
try
{
}
catch ( IOException e )
{
System.out.println( "Произошла ошибка записи" ) ;
}
JAVA
WriteFile.java

125
4. Внутри фигурных скобок блока try добавьте оператор для созда- ния объекта FileWriter для текстового файла с именем tam.txt.
FileWriter file = new FileWriter( "tam.txt" ) ;
5. Создайте объект
BufferedWriter
для записи файла.
BufferedWriter buffer = new BufferedWriter( file ) ;
6. Добавьте операторы для записи строк текста, а также символов новой строки в текстовый файл. Например, перевод произведения
«Тэм О’Шентер» Роберта Бернса.
buffer.write( "Дул ветер из последних сил," ) ;
buffer.newLine()
;
buffer.write( "И град хлестал, и ливень лил," );
buffer.newLine()
;
buffer.write( "И вспышки молний тьма глотала," ) ;
buffer.newLine()
;
buffer.write( "И небо долго грохотало..." ) ;
buffer.newLine()
;
buffer.write( "В такую ночь, как эта ночь," ) ;
buffer.newLine()
;
buffer.write( "Сам дьявол погулять не прочь." ) ;
7. Не забудьте закрыть объект BufferedWriter, поскольку он больше не нужен.
buffer.close()
;
8. Сохраните программу под именем WriteFile.java, затем скомпили- руйте и запустите; она запишет текстовый файл в тот же каталог, где находится программа.
Совет
Вместо того чтобы переза- писывать текст в файле при помощи метода write(), вы можете использовать метод append() объекта
BufferedWriter для добавле- ния текста в файл.

7. Импор
тирование ф
ункций
126
Сортировка элементов
массива
В Java содержится пакет с именем java.util, который предлагает по- лезные утилиты для работы с набором данных. Данный пакет можно сделать доступным любой программе, включив в самое начало файла
.java оператор import. Например, используя шаблон *, можно импорти- ровать все классы данного пакета: import java.util.* ;.
В пакете java.util содержится класс с именем Arrays, предлагающий методы, которые можно использовать для работы с массивами. Данная функциональность может быть доступна в программах, если импор- тировать все классы пакета java.util, либо, если программа требует только одного класса, указать в операторе import определенное имя класса. Например, для импорта класса Arrays запишем import java.
util.Arrays ;
В классе Arrays содержится метод sort(), который может упорядочи- вать элементы массива либо в алфавитном порядке, либо численно.
1. Создайте новую программу, импортирующую функциональность класса java.util.Arrays.
import java.util.Arrays ;
2. Добавьте класс с именем Sort, содержащий стандартный метод
main
class
Sort
{ public static void main( String[] args ) { } }
3. После метода
main
добавьте метод для отображения содержимого всех элементов переданного строкового массива.
public static void display( String[] elems )
{
System.out.println( "\nСтроковый Массив:" ) ;
for ( int i = 0 ; i < elems.length ; i++ )
System.out.println( "Элемент "+i+" — "+elems[i] ) ;
}
4. Добавьте перегруженную версию метода display() для отображе- ния содержимого всех элементов переданного целочисленного мас- сива.
JAVA
Sort.java
Совет
Более подробно о перегруз- ке методов см. в главе 6.

127
public static void display( int[] elems )
{
System.out.println( "\nЦелочисленный Массив:" ) ;
for ( int i = 0 ; i < elems.length ; i++ )
System.out.println( "Элемент "+i+" — "+elems[i] ) ;
}
5. Внутри фигурных скобок главного метода объявите и проинициа- лизируйте строковый и целочисленный массивы.
String[] names = { "Майк" , "Дэйв" , "Энди" } ;
int[] nums = { 200 , 300 , 100 } ;
6. Выведите содержимое всех элементов каждого массива.
display( names ) ;
display( nums ) ;
7. Отсортируйте содержимое элементов обоих массивов.
Arrays.sort( names ) ;
Arrays.sort( nums ) ;
8. Выведите содержимое всех элементов каждого массива еще раз.
display( names ) ;
display( nums ) ;
9. Сохраните программу под именем Sort.java, затем скомпилируйте и запустите.
На заметку
В данном примере в каждом из циклов for выполняет- ся только один оператор, поэтому фигурных скобок не требуется, но для ясности иногда можно их добавлять.

7. Импор
тирование ф
ункций
128
Создание списочных
массивов
В пакете java.util содержится класс с именем ArrayList, который хра- нит данные в упорядоченном «наборе», являющемся последовательно- стью с изменяемым размером. Этот класс делается доступным в про- грамме при помощи команды импорта: import java.util.ArrayList;.
Список может содержать повторяющиеся элементы, и объект ArrayList имеет полезные методы, позволяющие работать с элементами массива, используя их порядковые номера (индексы). Например, вызов get(0) позволяет получить значение, хранящееся в первом элементе, в то вре- мя как remove(1) удаляет второй элемент списка.
При помощи метода списка set() можно изменять значения элемен- тов, указав в качестве аргументов этому методу порядковый номер и новое значение. Метод add() позволяет в определенное место списка добавлять элементы, указав в качестве аргументов порядковый номер и значение. При этом список расширяется, в него включаются допол- нительные элементы, а порядковые номера сдвигаются.
Объект ArrayList создается при помощи ключевого слова new, но, как и другие наборы Java, при создании нужно указывать тип элемента, в котором будет содержаться список. Обычно списки содержат стро- ковые элементы, поэтому объект ArrayList должен иметь суффикс

Такие наборы, как ArrayList содержат метод forEach(), с помощью ко- торого можно обходить элементы списка.
Элементы списка можно также обойти при помощи «лямбда- выражения», которое можно указать методу forEach() в качестве аргу- мента. Лямбда-выражения — это простые и короткие анонимные ме- тоды, которые определяются в том же месте, где и выполняются. Они начинаются со скобок, содержащих аргументы, затем ставится после- довательность символов ->, после которой идет блок операторов:
(
аргумент/-ы ) -> { оператор/-ы }
Тип данных аргументов может быть объявлен либо явно, либо может подразумеваться из контекста — (String x) может быть заменено на
(x)
. Кроме того, фигурные скобки могут быть опущены, если блок опе- раторов лямбда-выражений содержит только один оператор.
При помощи метода forEach() значение текущего элемента на каждой итерации может быть передано лямбда-выражению в качестве его ар- гумента, а затем отображено в выводе при помощи его оператора.
Совет
Найти количество элемен- тов, содержащихся в списке, вы можете, вызвав метод
size().
Новинка
Лямбда-выражения появи- лись в версии Java 8 для краткой записи анонимных методов.

129
1. Создайте новую программу, которая импортирует все методы клас- са java.util.ArrayList.
import java.util.ArrayList ;
2. Добавьте класс с именем Lists, содержащий стандартный метод
main
class
Lists
{ public static void main( String[] args ) { } }
3. Внутри фигурных скобок главного метода добавьте оператор для создания строкового списочного массива с именем list.
ArrayList list = new ArrayList() ;
4. Далее добавьте операторы, заполняющие элементы списка строко- выми значениями, а затем выведите весь список.
1   ...   8   9   10   11   12   13   14   15   ...   18


написать администратору сайта