1 Lection3. Author: Dudnik O.A. Пакет java.io.* Java in pictures
2
3
4
5 FileReader Reader reader = new FileReader("c:\\data\\input-text.txt"); int data = reader.read(); while(data != -1) { //do something with data... doSomethingWithData(data); data = reader.read(); } reader.close();
6
7
8
9
10 FileWriter Writer writer = new FileWriter("c:\\data\\output.txt"); while(moreData) { String data = getMoreData(); writer.write(data); } writer.close();
11 package java.io;
12
13
14 InputStream read() возвращает представление очередного доступного символа во входном потоке в виде целого. read(byte b[]) пытается прочесть максимум b.length байтов из входного потока в массив b. Возвращает количество байтов, в действительности прочитанных из потока. read(byte b[], int off, int len) пытается прочесть максимум len байтов, расположив их в массиве b, начиная с элемента off. Возвращает количество реально прочитанных байтов. skip(long n) пытается пропустить во входном потоке n байтов. Возвращает количество пропущенных байтов. available() возвращает количество байтов, доступных для чтения в настоящий момент. close() закрывает источник ввода. Последующие попытки чтения из этого потока приводят к возбуждению IOException. mark(int readlimit) ставит метку в текущей позиции входного потока, которую можно будет использовать до тех пор, пока из потока не будет прочитано readlimit байтов. reset() возвращает указатель потока на установленную ранее метку. markSupported() возвращает true, если данный поток поддерживает операции mark/reset
15 OutputStream write(int b) записывает один байт в выходной поток. Обратите внимание аргумент этого метода имеет тип int, что позволяет вызывать write, передавая ему выражение, при этом не нужно выполнять приведение его типа к byte. write(byte b[]) записывает в выходной поток весь указанный массив байтов. write(byte b[], int off, int len) записывает в поток часть массива len байтов, начиная с элемента b[off]. flush() очищает любые выходные буферы, завершая операцию вывода. close() закрывает выходной поток. Последующие попытки записи в этот поток будут возбуждать IOException
16
17 Class File Constructor Description File(path) File(dirpath,fname) File(dir, fname)
18
19 Check if File Exists File file = new File("c:\\data\\input-file.txt"); boolean fileExists = file.exists(); File Length File file = new File("c:\\data\\input-file.txt"); long length = file.length(); Rename or Move File File file = new File("c:\\data\\input-file.txt"); boolean success = file.renameTo(new File("c:\\data\\new-file.txt"));
20 Delete File File file = new File("c:\\data\\input- file.txt"); boolean success = file.delete(); Check if Path is File or Directory File file = new File("c:\\data"); boolean isDirectory =file.isDirectory(); Read List of Files in Directory File file = new File("c:\\data"); String[] fileNames = file.list(); File[] files = file.listFiles();
21 import java.io.File; class FileTest { static void p(String s) { System.out.println(s); } public static void main(String args[]) { File f1 = new File("/java/COPYRIGHT"); p("File Name:" + f1.getName()); p("Path:" + f1.getPath()); p("Abs Path:" + f1.getAbsolutePath()); p("Parent:" + f1.getParent()); p(f1.exists() ? "exists" : "does not exist"); p(f1.canWrite() ? "is writeable" : "is not writeable"); p(f1.canRead() ? "is readable" : "is not readable"); p("is " + (f1.isDirectory() ? " " : "not") + " a directory"); p(f1.isFile() ? "is normal file" : "might be a named pipe"); p(f1.isAbsolute() ? "is absolute" : "is not absolute"); p("File last modified:" + f1. lastModified()); p("File size:" + f1.length() + " Bytes"); }
22 При запуске этой программы вы получите что-то наподобие вроде: File Name:COPYRIGHT (имя файла) Path:/java/COPYRIGHT (путь) Abs Path:/Java/COPYRIGHT (путь от корневого каталога) Parent:/java (родительский каталог) exists (файл существует) is writeable (разрешена запись) is readable (разрешено чтение) is not a directory (не каталог) is normal file (обычный файл) is absolute File last modified: (последняя модификация файла) File size:695 Bytes (размер файла)
23 java.io.* File FilenameFilter InputStreamOutputStream FilelnputStream FileOutputStream PrintStream Console Reader Writer
24 FileOutputStream import java.io.*; class FileOutputStreamS { public static byte getlnput()[] throws Exception { byte buffer[] = new byte[12]; for (int i=0; i
25 Console import java.io.Console; import java.util.Arrays; import java.io.IOException; public class Password { public static void main (String args[]) throws IOException { Console c = System.console(); if (c == null) { System.err.println("No console."); System.exit(1); } String login = c.readLine("Enter your login: "); char [] oldPassword = c.readPassword("Enter your old password: "); if (verify(login, oldPassword)) { boolean noMatch; do { char [] newPassword1 = c.readPassword("Enter your new password: "); char [] newPassword2 = c.readPassword("Enter new password again: "); noMatch = ! Arrays.equals(newPassword1, newPassword2); if (noMatch) { c.format("Passwords don't match. Try again.%n"); } else { change(login, newPassword1); c.format("Password for %s changed.%n", login); } Arrays.fill(newPassword1, ' '); Arrays.fill(newPassword2, ' '); } while (noMatch); } Arrays.fill(oldPassword, ' '); } // Dummy change method. static boolean verify(String login, char[] password) { // This method always returns // true in this example. // Modify this method to verify // password according to your rules. return true; } // Dummy change method. static void change(String login, char[] password) { // Modify this method to change // password according to your rules. }