SlideShare a Scribd company logo
‫در‬ ‫خروجی‬ ‫و‬ ‫ورودی‬
‫جاوا‬
Java I/O
‫شاهسون‬ ‫سعید‬
s.shahsavan@gmail.com
‫مقدمه‬
‫خروجی‬ ‫و‬ ‫ورودی‬ ‫انواع‬
‫کنسول‬
‫کلید‬ ‫صفحه‬
‫فایل‬
‫شبکه‬
‫پرداختن‬ ‫ضرورت‬
‫کار‬ ‫ضروری‬ ‫و‬ ‫ناپذیر‬ ‫اجتناب‬ ‫بخش‬
‫اغلب‬‫دارد‬ ‫را‬ ‫زمان‬ ‫و‬ ‫هزینه‬ ‫بیشترین‬.
‫پیچیده‬
‫شماره‬ ‫قاتل‬1‫برنامه‬ ‫کارائی‬
‫سازی‬ ‫پیاده‬I/O‫جاوا‬ ‫در‬
‫پکیج‬java.io
‫نسخه‬ ‫از‬1.0‫است‬ ‫موجود‬.
‫پذیر‬ ‫انعطاف‬
Stream
‫داده‬ ‫از‬ ‫جریانی‬ ‫انتزاعی‬ ‫مفهوم‬(‫دریافت‬ ‫یا‬ ‫انتشار‬)
‫کنسول‬ ‫در‬ ‫کاربر‬ ‫ورودی‬ ‫از‬ ‫جریانی‬
‫فایل‬ ‫های‬ ‫بایت‬ ‫از‬ ‫جریانی‬
‫ها‬ ‫فایل‬ ‫های‬ ‫کاراکتر‬ ‫از‬ ‫جریانی‬
‫شبکه‬ ‫روی‬ ‫های‬ ‫بیت‬ ‫از‬ ‫جریانی‬
‫فیزیکی‬ ‫ابزار‬ ‫یک‬ ‫با‬ ‫مرتبط‬
‫تمام‬Stream‫کنند‬ ‫می‬ ‫رفتار‬ ‫شکل‬ ‫یک‬ ‫به‬ ‫ها‬.
‫ها‬ ‫آن‬ ‫تفاوت‬ ‫در‬ ‫شدن‬ ‫درگیر‬ ‫بدون‬ ،‫ها‬ ‫خروجی‬ ‫و‬ ‫ورودی‬ ‫با‬ ‫کار‬ ‫شفاف‬ ‫روش‬
‫مثال‬:‫شبکه‬ ‫و‬ ‫کلید‬ ‫صفحه‬
Stream
‫مفهوم‬Stream‫است‬ ‫انتزاعی‬ ‫کامال‬.
‫اشیا‬Stream‫شوند‬ ‫می‬ ‫ایجاد‬ ‫فرض‬ ‫پیش‬ ‫طور‬ ‫به‬ ‫که‬.
System.in‫یک‬InputStream‫است‬.
System.out‫و‬System.err‫یک‬PrintStream‫است‬.
Stream
‫برنامه‬ ‫در‬ ‫اطالعات‬ ‫خواندن‬
Stream
‫برنامه‬ ‫در‬ ‫اطالعات‬ ‫نوشتن‬
‫انواع‬Stream
Byte Stream
Character Stream
Byte Stream
‫نوشتن‬ ‫یا‬ ‫خواندن‬8‫داده‬ ‫از‬ ‫بیت‬
‫توسط‬2‫است‬ ‫شده‬ ‫تعریف‬ ‫کالس‬ ‫مراتب‬ ‫سلسله‬:
InputStream
OutputStream
OutputStream
 write(byte)
 write(byte[] bytes, int offset, int length)
 outputStream.flush()
 Example
 OutputStream outputStream = new FileOutputStream("c:dataoutput-text.txt");
while(hasMoreData()) {
int data = getMoreData();
outputStream.write(data);
}
outputStream.close();
 Transparent Buffering via BufferedOutputStream
 OutputStream outputStream = new BufferedOutputStream( new FileOutputStream("output-
file.txt"), bufferSize);
‫های‬ ‫مثال‬OutputStream
‫کالس‬ ‫نام‬‫کاربرد‬
ByteArrayOutputStream‫نوشتن‬ ‫امکان‬‫می‬ ‫فراهم‬ ‫را‬ ‫بایت‬ ‫از‬ ‫جریانی‬
‫کند‬.
FileOutputStream‫کند‬ ‫می‬ ‫فراهم‬ ‫را‬ ‫فایل‬ ‫نوشتن‬ ‫امکان‬.
PipedOutputStream‫نوشتن‬ ‫امکان‬‫خط‬ ‫یک‬ ‫در‬ ‫را‬ ‫بایت‬ ‫از‬ ‫جریانی‬
‫کند‬ ‫می‬ ‫فراهم‬ ‫لوله‬.‫تبادل‬ ‫لوله‬ ‫خط‬ ‫از‬ ‫منظور‬
‫بین‬ ‫داده‬2Thread‫است‬.
BufferedOutputStream‫امکان‬‫بافر‬‫کند‬ ‫می‬ ‫فراهم‬ ‫را‬ ‫اطالعات‬ ‫کردن‬.
DataOutputStream‫جای‬ ‫به‬ ‫را‬ ‫ای‬ ‫پایه‬ ‫مقادیر‬ ‫نوشتن‬ ‫امکان‬
‫بایت‬ ‫نوشتن‬‫کند‬ ‫می‬ ‫فراهم‬ ‫خام‬ ‫های‬.
PrintStream‫را‬ ‫پایه‬ ‫مقادیر‬ ‫نوشتن‬ ‫امکان‬‫فرم‬ ‫صورت‬ ‫به‬‫ت‬
‫دارد‬ ‫شده‬
ObjectOutputStream‫خا‬ ‫های‬ ‫بایت‬ ‫جای‬ ‫به‬ ‫را‬ ‫اشیا‬ ‫نوشتن‬ ‫امکان‬‫م‬
‫فراهم‬‫کند‬ ‫می‬.
PrintStream
 PrintStream printStream = new PrintStream(outputStream);
 printStream.print(true);
 printStream.print((int) 123);
 printStream.print((float) 123.456);
 printStream.printf(Locale.UK, "Text + data: %1$", 123);
 printStream.close();
InputStream
 Int read()
 int read(byte[])
 read(byte[] bytes, int offset, int length)
 readAllBytes()
 Example
 int data = inputStream.read();
while(data != -1) {
// do something with data variable
data = inputStream.read(); // read next byte
}
‫های‬ ‫مثال‬InputStream
‫کالس‬ ‫نام‬‫کاربرد‬
ByteArrayInputStream‫خواندن‬ ‫امکان‬‫می‬ ‫فراهم‬ ‫را‬ ‫بایت‬ ‫از‬ ‫جریانی‬
‫کند‬.
FileInputStream‫کند‬ ‫می‬ ‫فراهم‬ ‫را‬ ‫فایل‬ ‫خواندن‬ ‫امکان‬.
PipedInputStream‫خواندن‬ ‫امکان‬‫خط‬ ‫یک‬ ‫در‬ ‫را‬ ‫بایت‬ ‫از‬ ‫جریانی‬
‫کند‬ ‫می‬ ‫فراهم‬ ‫لوله‬.‫تبادل‬ ‫لوله‬ ‫خط‬ ‫از‬ ‫منظور‬
‫بین‬ ‫داده‬2Thread‫است‬.
BufferedInputStream‫امکان‬‫بافر‬‫کند‬ ‫می‬ ‫فراهم‬ ‫را‬ ‫اطالعات‬ ‫کردن‬.
DataInputStream‫جای‬ ‫به‬ ‫را‬ ‫ای‬ ‫پایه‬ ‫مقادیر‬ ‫خواندن‬ ‫امکان‬
‫بایت‬ ‫خواندن‬‫کند‬ ‫می‬ ‫فراهم‬ ‫خام‬ ‫های‬.
ObjectInputStream‫خام‬ ‫های‬ ‫بایت‬ ‫جای‬ ‫به‬ ‫را‬ ‫اشیا‬ ‫خواندن‬ ‫امکان‬
‫فراهم‬‫کند‬ ‫می‬.
ByteArrayInputStream
 available()
 ByteArrayInputStream byteArrayInputStream = new
ByteArrayInputStream(bytes);
 Example:
 int data = byteArrayInputStream.read();
while(data != -1) {
//do something with data
data = byteArrayInputStream.read();
}
FileInputStream
 read()
 read(byte[])
 Example:
 InputStream input = new FileInputStream("c:datainput-text.txt");
int data = input.read();
while(data != -1) {
//do something with data...
doSomethingWithData(data);
data = input.read();
}
input.close();
BufferedInputStream
‫ورودی‬ ‫به‬ ‫مکرر‬ ‫ارجاع‬ ‫از‬ ‫جلوگیری‬ ‫برای‬
 BufferedInputStream bufferedInputStream = new BufferedInputStream(
new FileInputStream("c:datainput-file.txt"), bufferSize);
 BufferedInputStream bufferedInputStream = new BufferedInputStream(
new FileInputStream("c:datainput-file.txt"));
int data = bufferedInputStream.read();
while(data != -1) {
data = bufferedInputStream.read();
}
bufferedInputStream.close();
‫مهم‬ ‫نکات‬
‫همیشه‬Stream‫استفاده‬ ‫از‬ ‫بعد‬ ‫را‬close‫کنید‬.
‫از‬resource leak‫کند‬ ‫می‬ ‫جلوگیری‬.
‫از‬ ‫توانید‬ ‫می‬try with resource‫کنید‬ ‫استفاده‬.
‫از‬ ‫نباید‬ ‫که‬ ‫مواقعی‬Byte Stream‫کنید‬ ‫استفاده‬:
‫نوعی‬I/O‫کرد‬ ‫اجتناب‬ ‫آن‬ ‫از‬ ‫باید‬ ‫که‬ ‫پایین‬ ‫سطح‬.
‫کند‬ ‫می‬ ‫استفاده‬ ‫خروجی‬ ‫عنوان‬ ‫به‬ ‫نمایش‬ ‫صفحه‬ ‫و‬ ‫ورودی‬ ‫عنوان‬ ‫به‬ ‫کلید‬ ‫صفحه‬ ‫از‬ ‫معموال‬.
Byte Stream‫شود‬ ‫استفاده‬ ‫ای‬ ‫پایه‬ ‫انواع‬ ‫خروجی‬ ‫و‬ ‫ورودی‬ ‫عنوان‬ ‫به‬ ‫باید‬ ‫فقط‬.
‫دیگر‬ ‫انواع‬ ‫همه‬Stream‫پایه‬ ‫بر‬Byte Stream‫است‬.
Character Stream
‫ورودی‬ ‫مدیریت‬ ‫برای‬ ‫مناسبی‬ ‫ابزار‬‫و‬‫می‬ ‫فراهم‬ ‫کاراکتر‬ ‫خروجی‬‫کند‬.
‫از‬Unicode‫کند‬ ‫می‬ ‫استفاده‬.
‫از‬ ‫موارد‬ ‫بعضی‬ ‫در‬ByteStream‫است‬ ‫موثرتر‬.
‫ها‬ ‫برنامه‬ ‫اغلب‬ ‫در‬I/O‫با‬CharacterStream‫از‬ ‫کمتری‬ ‫پیچیدگی‬ByteStream‫دارد‬.
‫پایه‬ ‫های‬ ‫کالس‬ ‫توسط‬ ‫سازی‬ ‫پیاده‬
Reader
Writer
Character Stream
‫ها‬ ‫تفاوت‬ ‫به‬ ‫توجه‬
‫بایت‬ ‫کپی‬ ‫به‬ ‫شبیه‬ ‫ها‬ ‫کاراکتر‬ ‫کپی‬‫هاست‬
‫از‬ ‫ها‬ ‫کاراکتر‬ ‫کپی‬FileReader‫و‬FileWriter‫از‬ ‫ها‬ ‫بایت‬ ‫کپی‬ ‫و‬ ‫کند‬ ‫می‬ ‫استفاده‬
FileInputStream‫و‬FileOutputStream
‫ای‬ ‫پایه‬ ‫های‬ ‫مثال‬Stream
 Exchanging System Streams in (System.out)
 OutputStream output = new FileOutputStream("system.out.txt");
 PrintStream printOut = new PrintStream(output);
 System.setOut(printOut);
 Exchanging System Streams in (System.err)
 OutputStream output = new FileOutputStream("system.out.txt");
 PrintStream printOut = new PrintStream(output);
 System.setErr(printOut);
 Read Character (System.in)
 System.in.read()
Reader And Writer
‫همانند‬InputStream‫و‬OutputStream‫کاراکتری‬ ‫کارکرد‬ ‫با‬ ‫ولی‬
‫تبدیل‬InputStream‫به‬Reader
 InputStream inputStream = new FileInputStream("input.txt");
Reader inputStreamReader = new InputStreamReader(inputStream);
‫تبدیل‬OutputStream‫به‬Writer
 OutputStream outputStream = new FileOutputStream("output.txt");
Writer outputStreamWriter = new OutputStreamWriter(outputStream);
outputStreamWriter.write("Hello World");
Scanner
 Scanner in = new Scanner(System.in);
System.out.print("Enter your name: ");
String name = in.nextLine();
System.out.println("Name is: " + name);
in.close();
Buffered Streams
‫ها‬ ‫مثال‬ ‫اغلب‬‫بافر‬‫هستند‬ ‫نشده‬.
‫و‬ ‫خواندن‬ ‫هر‬‫نوشتنی‬‫یک‬ ‫توسط‬API‫شود‬ ‫می‬ ‫فراخوانی‬ ‫عامل‬ ‫سیستم‬ ‫با‬ ‫متناسب‬.
‫آید‬ ‫می‬ ‫پایین‬ ‫برنامه‬ ‫کارائی‬.‫و‬ ‫خواندن‬ ‫هر‬‫نوشتنی‬‫ش‬ ‫و‬ ‫دیسک‬ ‫به‬ ‫دسترسی‬ ‫یک‬ ‫با‬‫بکه‬
‫است‬ ‫همراه‬.
‫کارائی‬ ‫افزایش‬ ‫و‬ ‫خروجی‬ ‫و‬ ‫ورودی‬ ‫به‬ ‫دسترسی‬ ‫کاهش‬ ‫برای‬Buffered Stream‫معرفی‬
‫است‬ ‫شده‬.
‫که‬ ‫شود‬ ‫می‬ ‫انجام‬ ‫سیستمی‬ ‫فراخوانی‬ ‫زمانی‬ ‫فقط‬ ‫خواندن‬ ‫هنگام‬ ‫در‬‫بافر‬‫خالیست‬.
‫که‬ ‫شود‬ ‫می‬ ‫انجام‬ ‫سیستمی‬ ‫فراخوانی‬ ‫زمانی‬ ‫فقط‬ ‫نوشتن‬ ‫هنگام‬ ‫در‬‫بافر‬‫است‬ ‫پر‬.
‫اغلب‬Buffered Stream‫از‬ ‫ها‬Stream‫سریع‬ ‫معمولی‬ ‫های‬‫ترند‬‫ها‬ ‫آن‬ ‫از‬ ‫کنید‬ ‫سعی‬ ،
‫کنید‬ ‫استفاده‬.
Buffered Streams
‫نوشتن‬ ‫و‬ ‫خواندن‬ ‫به‬ ‫نوشتن‬ ‫و‬ ‫خواندن‬ ‫ساده‬ ‫تبدیل‬‫بافر‬‫شده‬:
‫ایده‬Wrapper
 inputStream = new BufferedReader(new FileReader("oldFile.txt"));
 outputStream = new BufferedWriter(new FileWriter("newFile.txt"));
Buffered Streams
‫معروف‬ ‫های‬ ‫کالس‬Buffered Stream
 BufferedInputStream
 BufferedOutputStream
 BufferedReader
 BufferedWriter
File
‫بایت‬ ‫از‬ ‫ای‬ ‫رشته‬ ‫فایل‬ ‫هر‬‫هاست‬( .stream of bytes)
‫هز‬‫عاملی‬ ‫سیستم‬‫مکانیزمی‬‫دارد‬ ‫فایل‬ ‫انتهای‬ ‫کردن‬ ‫مشخص‬ ‫برای‬.
‫کالس‬File‫بسته‬ ‫در‬java.io‫است‬ ‫موجود‬.
‫هست‬ ‫نیز‬ ‫پوشه‬ ‫شامل‬ ‫فایل‬ ‫انتزاعی‬ ‫مفهوم‬.
‫شی‬File‫نیست‬ ‫فایل‬ ‫در‬ ‫نوشتن‬ ‫و‬ ‫خواندن‬ ‫برای‬.
‫است‬ ‫مسیر‬ ‫و‬ ‫زمان‬ ،‫دسترسی‬ ‫مثل‬ ‫فایل‬ ‫اطالعات‬ ‫به‬ ‫دسترسی‬ ‫برای‬.
‫حاوی‬ ‫های‬ ‫فایل‬byte array‫را‬Binary File‫را‬ ‫رشته‬ ‫حاوی‬ ‫و‬Text File‫می‬‫نامیم‬.
‫متدهای‬File
‫مسیر‬ ‫به‬ ‫دسترسی‬
 getAbsolutePath()
 getPath()
 getParent()
 getCanonicalPath()
‫فایل‬ ‫وجود‬ ‫بررسی‬ ‫برای‬
 isFile()
 isDirectory()
 exists()
‫متدهای‬File
‫فایل‬ ‫مشخصات‬ ‫بررسی‬ ‫برای‬
 getName()
 length()
 isAbsolute()
 lastModified()
 isHidden()
‫فایل‬ ‫های‬ ‫دسترسی‬ ‫بررسی‬ ‫جهت‬
 canRead()
 canWrite()
 canExecute()
‫متدهای‬File
‫سازی‬ ‫ذخیره‬ ‫محل‬ ‫مشخصات‬ ‫بررسی‬ ‫برای‬
 getFreeSpace()
 getUsableSpace()
 getTotalSpace()
‫متدهای‬File
‫گر‬ ‫تسهیل‬ ‫متدهای‬
 Boolean createNewFile()
 Boolean renameTo(File nf)
 Boolean delete()
 Boolean setLastModified(long ms)
 Boolean setReadOnly()
File Streams
FileInputStream‫های‬ ‫فایل‬ ‫خواندن‬ ‫برای‬‫باینری‬
FileOutputStream‫برای‬‫فایل‬ ‫در‬ ‫نوشتن‬‫های‬‫باینری‬
FileReader‫متنی‬ ‫های‬ ‫فایل‬ ‫از‬ ‫خواندن‬ ‫برای‬
FileWriter‫متنی‬ ‫های‬ ‫فایل‬ ‫در‬ ‫نوشتن‬ ‫برای‬
Serialization
‫ها‬ ‫بایت‬ ‫از‬ ‫ای‬ ‫رشته‬ ‫صورت‬ ‫به‬ ‫اشیا‬ ‫نگهداری‬ ‫فرآیند‬
‫کالس‬ ‫ساختار‬ ‫نگهداری‬ ‫همانند‬(‫فیلدها‬‫و‬‫متدها‬‫و‬‫انواعشان‬)‫نیز‬ ‫آن‬ ‫های‬ ‫داده‬ ‫شامل‬ ،
‫هست‬.
‫کلیه‬‫فیلدهای‬‫باید‬ ‫کالس‬ ‫پایه‬ ‫غیر‬Serializable‫باشند‬.
DeSerialization
‫ها‬ ‫بایت‬ ‫از‬ ‫ای‬ ‫رشته‬ ‫روی‬ ‫از‬ ‫اشیا‬ ‫مجدد‬ ‫ایجاد‬ ‫فرآیند‬
‫کالس‬ ‫ساختار‬ ‫ایجاد‬ ‫همانند‬(‫فیلدها‬‫و‬‫متدها‬‫و‬‫انواعشان‬)‫نیز‬ ‫آن‬ ‫های‬ ‫داده‬ ‫شامل‬ ،
‫هست‬.
‫نسخه‬ ‫از‬ ‫مستقل‬ ‫فرآیند‬ ‫کل‬JVM‫است‬.
‫سازی‬ ‫پیاده‬Serialization
‫ای‬ ‫پایه‬ ‫های‬ ‫کالس‬
ObjectInputStream
ObjectOutputStream
transient:‫از‬ ‫جلوگیری‬Serialization‫فیلد‬ ‫در‬‫خاص‬ ‫های‬
‫مسائل‬Serialization
‫کارائی‬
‫تغییرات‬ ‫بررسی‬‫دشوار‬‫است‬
ObjectOutputStream
 ObjectOutputStream objectOutputStream = new ObjectOutputStream(new
FileOutputStream("data/person.bin"));
Person person = new Person();
person.name = “Saeed Shahsavan";
person.age = 34;
objectOutputStream.writeObject(person);
objectOutputStream.close();
ObjectInputStream
 ObjectInputStream objectInputStream = new ObjectInputStream(new
FileInputStream("object.data"));
 MyClass object = (MyClass) objectInputStream.readObject();
 objectInputStream.close();
‫سازی‬ ‫فشرده‬
‫بسته‬java.util.zip
‫سازی‬ ‫نافشرده‬ ‫و‬ ‫سازی‬ ‫فشرده‬ ‫نحوه‬
 GZIPOutputStream gos = new GZIPOutputStream(new
FileOutputStream("Myfile.gz"));
‫کالس‬Properties
‫شامل‬key‫و‬value
‫مبنای‬ ‫بر‬ ،‫مقدار‬ ‫آوردن‬ ‫بدست‬ ‫و‬ ‫ذخیره‬ ‫برای‬key
‫زیرکالس‬Hashtable
‫خصیصه‬ ‫ذخیره‬ ‫و‬ ‫استخراج‬ ‫متدهای‬ ‫دارای‬
 Properties grades = new Properties();
grades.setProperty("Algebra", "20");
grades.setProperty("Physics", "18");
// Save the grades properties using store() and an output stream
FileOutputStream out = new FileOutputStream("schoolGrades.properties");
grades.store(out, null);
out.close();
‫کالس‬Preferences
‫نسخه‬ ‫از‬1.4‫به‬Java‫است‬ ‫شده‬ ‫اضافه‬.
‫ذخیره‬preferences‫سازی‬ ‫ذخیره‬ ‫محل‬ ‫گرفتن‬ ‫نظر‬ ‫در‬ ‫بدون‬
‫توسط‬ ‫مناسب‬ ‫مکان‬API‫شود‬ ‫می‬ ‫مشخص‬.
‫در‬ ‫ویندوز‬ ‫در‬ ‫مثال‬ ‫برای‬Windows registry‫شود‬ ‫می‬ ‫ذخیره‬.
 Preferences prefs = Preferences.userRoot();
 Preferences prefs = Preferences.systemRoot();
 Preferences systemPrefs =
Preferences.systemNodeForPackage(MyProgram.class);
 prefs.put("hostname", "www.codejava.net"); // put String value
 String hostname = prefs.get("hostname", null);

More Related Content

Similar to Java io

Data Management System- Haseb System Co
Data Management System- Haseb System CoData Management System- Haseb System Co
Data Management System- Haseb System Co
Hamed Ghazanfari
 
python programming Python learning.pptx
python programming  Python learning.pptxpython programming  Python learning.pptx
python programming Python learning.pptx
MehdiHashemi35
 
Ssh edition 2
Ssh edition 2Ssh edition 2
Ssh edition 2
Yashar Esmaildokht
 
Introduction to oracle
Introduction to oracleIntroduction to oracle
Introduction to oracle
Ehsan Hamzei
 
سی پلاس پلاس به عنوان زبان دومی برای یادگیری شی گرایی
سی پلاس پلاس به عنوان زبان دومی  برای یادگیری شی گراییسی پلاس پلاس به عنوان زبان دومی  برای یادگیری شی گرایی
سی پلاس پلاس به عنوان زبان دومی برای یادگیری شی گرایی
mrm_196
 
Ssh
SshSsh
Ulimit
UlimitUlimit
Kotlin
KotlinKotlin
معرفي فايروال پايگاه داده
معرفي فايروال پايگاه دادهمعرفي فايروال پايگاه داده
معرفي فايروال پايگاه داده
Hamid Torkashvand
 
Html & Css
Html & CssHtml & Css
پروتکل TCP/IP
پروتکل TCP/IP پروتکل TCP/IP
پروتکل TCP/IP
kamrankamran1234
 
Herat University Library Management System Persian User Manual
Herat University Library Management System Persian User ManualHerat University Library Management System Persian User Manual
Herat University Library Management System Persian User Manual
Abdul Rahman Sherzad
 

Similar to Java io (14)

Data Management System- Haseb System Co
Data Management System- Haseb System CoData Management System- Haseb System Co
Data Management System- Haseb System Co
 
khazeni_taghizade
khazeni_taghizadekhazeni_taghizade
khazeni_taghizade
 
python programming Python learning.pptx
python programming  Python learning.pptxpython programming  Python learning.pptx
python programming Python learning.pptx
 
Ssh edition 2
Ssh edition 2Ssh edition 2
Ssh edition 2
 
Introduction to oracle
Introduction to oracleIntroduction to oracle
Introduction to oracle
 
سی پلاس پلاس به عنوان زبان دومی برای یادگیری شی گرایی
سی پلاس پلاس به عنوان زبان دومی  برای یادگیری شی گراییسی پلاس پلاس به عنوان زبان دومی  برای یادگیری شی گرایی
سی پلاس پلاس به عنوان زبان دومی برای یادگیری شی گرایی
 
Ssh
SshSsh
Ssh
 
Ulimit
UlimitUlimit
Ulimit
 
Kotlin
KotlinKotlin
Kotlin
 
معرفي فايروال پايگاه داده
معرفي فايروال پايگاه دادهمعرفي فايروال پايگاه داده
معرفي فايروال پايگاه داده
 
Html & Css
Html & CssHtml & Css
Html & Css
 
پروتکل TCP/IP
پروتکل TCP/IP پروتکل TCP/IP
پروتکل TCP/IP
 
Herat University Library Management System Persian User Manual
Herat University Library Management System Persian User ManualHerat University Library Management System Persian User Manual
Herat University Library Management System Persian User Manual
 
Git2
Git2Git2
Git2
 

Java io

  • 1. ‫در‬ ‫خروجی‬ ‫و‬ ‫ورودی‬ ‫جاوا‬ Java I/O ‫شاهسون‬ ‫سعید‬ s.shahsavan@gmail.com
  • 2. ‫مقدمه‬ ‫خروجی‬ ‫و‬ ‫ورودی‬ ‫انواع‬ ‫کنسول‬ ‫کلید‬ ‫صفحه‬ ‫فایل‬ ‫شبکه‬ ‫پرداختن‬ ‫ضرورت‬ ‫کار‬ ‫ضروری‬ ‫و‬ ‫ناپذیر‬ ‫اجتناب‬ ‫بخش‬ ‫اغلب‬‫دارد‬ ‫را‬ ‫زمان‬ ‫و‬ ‫هزینه‬ ‫بیشترین‬. ‫پیچیده‬ ‫شماره‬ ‫قاتل‬1‫برنامه‬ ‫کارائی‬
  • 3. ‫سازی‬ ‫پیاده‬I/O‫جاوا‬ ‫در‬ ‫پکیج‬java.io ‫نسخه‬ ‫از‬1.0‫است‬ ‫موجود‬. ‫پذیر‬ ‫انعطاف‬
  • 4. Stream ‫داده‬ ‫از‬ ‫جریانی‬ ‫انتزاعی‬ ‫مفهوم‬(‫دریافت‬ ‫یا‬ ‫انتشار‬) ‫کنسول‬ ‫در‬ ‫کاربر‬ ‫ورودی‬ ‫از‬ ‫جریانی‬ ‫فایل‬ ‫های‬ ‫بایت‬ ‫از‬ ‫جریانی‬ ‫ها‬ ‫فایل‬ ‫های‬ ‫کاراکتر‬ ‫از‬ ‫جریانی‬ ‫شبکه‬ ‫روی‬ ‫های‬ ‫بیت‬ ‫از‬ ‫جریانی‬ ‫فیزیکی‬ ‫ابزار‬ ‫یک‬ ‫با‬ ‫مرتبط‬ ‫تمام‬Stream‫کنند‬ ‫می‬ ‫رفتار‬ ‫شکل‬ ‫یک‬ ‫به‬ ‫ها‬. ‫ها‬ ‫آن‬ ‫تفاوت‬ ‫در‬ ‫شدن‬ ‫درگیر‬ ‫بدون‬ ،‫ها‬ ‫خروجی‬ ‫و‬ ‫ورودی‬ ‫با‬ ‫کار‬ ‫شفاف‬ ‫روش‬ ‫مثال‬:‫شبکه‬ ‫و‬ ‫کلید‬ ‫صفحه‬
  • 5. Stream ‫مفهوم‬Stream‫است‬ ‫انتزاعی‬ ‫کامال‬. ‫اشیا‬Stream‫شوند‬ ‫می‬ ‫ایجاد‬ ‫فرض‬ ‫پیش‬ ‫طور‬ ‫به‬ ‫که‬. System.in‫یک‬InputStream‫است‬. System.out‫و‬System.err‫یک‬PrintStream‫است‬.
  • 9. Byte Stream ‫نوشتن‬ ‫یا‬ ‫خواندن‬8‫داده‬ ‫از‬ ‫بیت‬ ‫توسط‬2‫است‬ ‫شده‬ ‫تعریف‬ ‫کالس‬ ‫مراتب‬ ‫سلسله‬: InputStream OutputStream
  • 10. OutputStream  write(byte)  write(byte[] bytes, int offset, int length)  outputStream.flush()  Example  OutputStream outputStream = new FileOutputStream("c:dataoutput-text.txt"); while(hasMoreData()) { int data = getMoreData(); outputStream.write(data); } outputStream.close();  Transparent Buffering via BufferedOutputStream  OutputStream outputStream = new BufferedOutputStream( new FileOutputStream("output- file.txt"), bufferSize);
  • 11. ‫های‬ ‫مثال‬OutputStream ‫کالس‬ ‫نام‬‫کاربرد‬ ByteArrayOutputStream‫نوشتن‬ ‫امکان‬‫می‬ ‫فراهم‬ ‫را‬ ‫بایت‬ ‫از‬ ‫جریانی‬ ‫کند‬. FileOutputStream‫کند‬ ‫می‬ ‫فراهم‬ ‫را‬ ‫فایل‬ ‫نوشتن‬ ‫امکان‬. PipedOutputStream‫نوشتن‬ ‫امکان‬‫خط‬ ‫یک‬ ‫در‬ ‫را‬ ‫بایت‬ ‫از‬ ‫جریانی‬ ‫کند‬ ‫می‬ ‫فراهم‬ ‫لوله‬.‫تبادل‬ ‫لوله‬ ‫خط‬ ‫از‬ ‫منظور‬ ‫بین‬ ‫داده‬2Thread‫است‬. BufferedOutputStream‫امکان‬‫بافر‬‫کند‬ ‫می‬ ‫فراهم‬ ‫را‬ ‫اطالعات‬ ‫کردن‬. DataOutputStream‫جای‬ ‫به‬ ‫را‬ ‫ای‬ ‫پایه‬ ‫مقادیر‬ ‫نوشتن‬ ‫امکان‬ ‫بایت‬ ‫نوشتن‬‫کند‬ ‫می‬ ‫فراهم‬ ‫خام‬ ‫های‬. PrintStream‫را‬ ‫پایه‬ ‫مقادیر‬ ‫نوشتن‬ ‫امکان‬‫فرم‬ ‫صورت‬ ‫به‬‫ت‬ ‫دارد‬ ‫شده‬ ObjectOutputStream‫خا‬ ‫های‬ ‫بایت‬ ‫جای‬ ‫به‬ ‫را‬ ‫اشیا‬ ‫نوشتن‬ ‫امکان‬‫م‬ ‫فراهم‬‫کند‬ ‫می‬.
  • 12. PrintStream  PrintStream printStream = new PrintStream(outputStream);  printStream.print(true);  printStream.print((int) 123);  printStream.print((float) 123.456);  printStream.printf(Locale.UK, "Text + data: %1$", 123);  printStream.close();
  • 13. InputStream  Int read()  int read(byte[])  read(byte[] bytes, int offset, int length)  readAllBytes()  Example  int data = inputStream.read(); while(data != -1) { // do something with data variable data = inputStream.read(); // read next byte }
  • 14. ‫های‬ ‫مثال‬InputStream ‫کالس‬ ‫نام‬‫کاربرد‬ ByteArrayInputStream‫خواندن‬ ‫امکان‬‫می‬ ‫فراهم‬ ‫را‬ ‫بایت‬ ‫از‬ ‫جریانی‬ ‫کند‬. FileInputStream‫کند‬ ‫می‬ ‫فراهم‬ ‫را‬ ‫فایل‬ ‫خواندن‬ ‫امکان‬. PipedInputStream‫خواندن‬ ‫امکان‬‫خط‬ ‫یک‬ ‫در‬ ‫را‬ ‫بایت‬ ‫از‬ ‫جریانی‬ ‫کند‬ ‫می‬ ‫فراهم‬ ‫لوله‬.‫تبادل‬ ‫لوله‬ ‫خط‬ ‫از‬ ‫منظور‬ ‫بین‬ ‫داده‬2Thread‫است‬. BufferedInputStream‫امکان‬‫بافر‬‫کند‬ ‫می‬ ‫فراهم‬ ‫را‬ ‫اطالعات‬ ‫کردن‬. DataInputStream‫جای‬ ‫به‬ ‫را‬ ‫ای‬ ‫پایه‬ ‫مقادیر‬ ‫خواندن‬ ‫امکان‬ ‫بایت‬ ‫خواندن‬‫کند‬ ‫می‬ ‫فراهم‬ ‫خام‬ ‫های‬. ObjectInputStream‫خام‬ ‫های‬ ‫بایت‬ ‫جای‬ ‫به‬ ‫را‬ ‫اشیا‬ ‫خواندن‬ ‫امکان‬ ‫فراهم‬‫کند‬ ‫می‬.
  • 15. ByteArrayInputStream  available()  ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(bytes);  Example:  int data = byteArrayInputStream.read(); while(data != -1) { //do something with data data = byteArrayInputStream.read(); }
  • 16. FileInputStream  read()  read(byte[])  Example:  InputStream input = new FileInputStream("c:datainput-text.txt"); int data = input.read(); while(data != -1) { //do something with data... doSomethingWithData(data); data = input.read(); } input.close();
  • 17. BufferedInputStream ‫ورودی‬ ‫به‬ ‫مکرر‬ ‫ارجاع‬ ‫از‬ ‫جلوگیری‬ ‫برای‬  BufferedInputStream bufferedInputStream = new BufferedInputStream( new FileInputStream("c:datainput-file.txt"), bufferSize);  BufferedInputStream bufferedInputStream = new BufferedInputStream( new FileInputStream("c:datainput-file.txt")); int data = bufferedInputStream.read(); while(data != -1) { data = bufferedInputStream.read(); } bufferedInputStream.close();
  • 18. ‫مهم‬ ‫نکات‬ ‫همیشه‬Stream‫استفاده‬ ‫از‬ ‫بعد‬ ‫را‬close‫کنید‬. ‫از‬resource leak‫کند‬ ‫می‬ ‫جلوگیری‬. ‫از‬ ‫توانید‬ ‫می‬try with resource‫کنید‬ ‫استفاده‬. ‫از‬ ‫نباید‬ ‫که‬ ‫مواقعی‬Byte Stream‫کنید‬ ‫استفاده‬: ‫نوعی‬I/O‫کرد‬ ‫اجتناب‬ ‫آن‬ ‫از‬ ‫باید‬ ‫که‬ ‫پایین‬ ‫سطح‬. ‫کند‬ ‫می‬ ‫استفاده‬ ‫خروجی‬ ‫عنوان‬ ‫به‬ ‫نمایش‬ ‫صفحه‬ ‫و‬ ‫ورودی‬ ‫عنوان‬ ‫به‬ ‫کلید‬ ‫صفحه‬ ‫از‬ ‫معموال‬. Byte Stream‫شود‬ ‫استفاده‬ ‫ای‬ ‫پایه‬ ‫انواع‬ ‫خروجی‬ ‫و‬ ‫ورودی‬ ‫عنوان‬ ‫به‬ ‫باید‬ ‫فقط‬. ‫دیگر‬ ‫انواع‬ ‫همه‬Stream‫پایه‬ ‫بر‬Byte Stream‫است‬.
  • 19. Character Stream ‫ورودی‬ ‫مدیریت‬ ‫برای‬ ‫مناسبی‬ ‫ابزار‬‫و‬‫می‬ ‫فراهم‬ ‫کاراکتر‬ ‫خروجی‬‫کند‬. ‫از‬Unicode‫کند‬ ‫می‬ ‫استفاده‬. ‫از‬ ‫موارد‬ ‫بعضی‬ ‫در‬ByteStream‫است‬ ‫موثرتر‬. ‫ها‬ ‫برنامه‬ ‫اغلب‬ ‫در‬I/O‫با‬CharacterStream‫از‬ ‫کمتری‬ ‫پیچیدگی‬ByteStream‫دارد‬. ‫پایه‬ ‫های‬ ‫کالس‬ ‫توسط‬ ‫سازی‬ ‫پیاده‬ Reader Writer
  • 20. Character Stream ‫ها‬ ‫تفاوت‬ ‫به‬ ‫توجه‬ ‫بایت‬ ‫کپی‬ ‫به‬ ‫شبیه‬ ‫ها‬ ‫کاراکتر‬ ‫کپی‬‫هاست‬ ‫از‬ ‫ها‬ ‫کاراکتر‬ ‫کپی‬FileReader‫و‬FileWriter‫از‬ ‫ها‬ ‫بایت‬ ‫کپی‬ ‫و‬ ‫کند‬ ‫می‬ ‫استفاده‬ FileInputStream‫و‬FileOutputStream
  • 21. ‫ای‬ ‫پایه‬ ‫های‬ ‫مثال‬Stream  Exchanging System Streams in (System.out)  OutputStream output = new FileOutputStream("system.out.txt");  PrintStream printOut = new PrintStream(output);  System.setOut(printOut);  Exchanging System Streams in (System.err)  OutputStream output = new FileOutputStream("system.out.txt");  PrintStream printOut = new PrintStream(output);  System.setErr(printOut);  Read Character (System.in)  System.in.read()
  • 22. Reader And Writer ‫همانند‬InputStream‫و‬OutputStream‫کاراکتری‬ ‫کارکرد‬ ‫با‬ ‫ولی‬ ‫تبدیل‬InputStream‫به‬Reader  InputStream inputStream = new FileInputStream("input.txt"); Reader inputStreamReader = new InputStreamReader(inputStream); ‫تبدیل‬OutputStream‫به‬Writer  OutputStream outputStream = new FileOutputStream("output.txt"); Writer outputStreamWriter = new OutputStreamWriter(outputStream); outputStreamWriter.write("Hello World");
  • 23. Scanner  Scanner in = new Scanner(System.in); System.out.print("Enter your name: "); String name = in.nextLine(); System.out.println("Name is: " + name); in.close();
  • 24. Buffered Streams ‫ها‬ ‫مثال‬ ‫اغلب‬‫بافر‬‫هستند‬ ‫نشده‬. ‫و‬ ‫خواندن‬ ‫هر‬‫نوشتنی‬‫یک‬ ‫توسط‬API‫شود‬ ‫می‬ ‫فراخوانی‬ ‫عامل‬ ‫سیستم‬ ‫با‬ ‫متناسب‬. ‫آید‬ ‫می‬ ‫پایین‬ ‫برنامه‬ ‫کارائی‬.‫و‬ ‫خواندن‬ ‫هر‬‫نوشتنی‬‫ش‬ ‫و‬ ‫دیسک‬ ‫به‬ ‫دسترسی‬ ‫یک‬ ‫با‬‫بکه‬ ‫است‬ ‫همراه‬. ‫کارائی‬ ‫افزایش‬ ‫و‬ ‫خروجی‬ ‫و‬ ‫ورودی‬ ‫به‬ ‫دسترسی‬ ‫کاهش‬ ‫برای‬Buffered Stream‫معرفی‬ ‫است‬ ‫شده‬. ‫که‬ ‫شود‬ ‫می‬ ‫انجام‬ ‫سیستمی‬ ‫فراخوانی‬ ‫زمانی‬ ‫فقط‬ ‫خواندن‬ ‫هنگام‬ ‫در‬‫بافر‬‫خالیست‬. ‫که‬ ‫شود‬ ‫می‬ ‫انجام‬ ‫سیستمی‬ ‫فراخوانی‬ ‫زمانی‬ ‫فقط‬ ‫نوشتن‬ ‫هنگام‬ ‫در‬‫بافر‬‫است‬ ‫پر‬. ‫اغلب‬Buffered Stream‫از‬ ‫ها‬Stream‫سریع‬ ‫معمولی‬ ‫های‬‫ترند‬‫ها‬ ‫آن‬ ‫از‬ ‫کنید‬ ‫سعی‬ ، ‫کنید‬ ‫استفاده‬.
  • 25. Buffered Streams ‫نوشتن‬ ‫و‬ ‫خواندن‬ ‫به‬ ‫نوشتن‬ ‫و‬ ‫خواندن‬ ‫ساده‬ ‫تبدیل‬‫بافر‬‫شده‬: ‫ایده‬Wrapper  inputStream = new BufferedReader(new FileReader("oldFile.txt"));  outputStream = new BufferedWriter(new FileWriter("newFile.txt"));
  • 26. Buffered Streams ‫معروف‬ ‫های‬ ‫کالس‬Buffered Stream  BufferedInputStream  BufferedOutputStream  BufferedReader  BufferedWriter
  • 27. File ‫بایت‬ ‫از‬ ‫ای‬ ‫رشته‬ ‫فایل‬ ‫هر‬‫هاست‬( .stream of bytes) ‫هز‬‫عاملی‬ ‫سیستم‬‫مکانیزمی‬‫دارد‬ ‫فایل‬ ‫انتهای‬ ‫کردن‬ ‫مشخص‬ ‫برای‬. ‫کالس‬File‫بسته‬ ‫در‬java.io‫است‬ ‫موجود‬. ‫هست‬ ‫نیز‬ ‫پوشه‬ ‫شامل‬ ‫فایل‬ ‫انتزاعی‬ ‫مفهوم‬. ‫شی‬File‫نیست‬ ‫فایل‬ ‫در‬ ‫نوشتن‬ ‫و‬ ‫خواندن‬ ‫برای‬. ‫است‬ ‫مسیر‬ ‫و‬ ‫زمان‬ ،‫دسترسی‬ ‫مثل‬ ‫فایل‬ ‫اطالعات‬ ‫به‬ ‫دسترسی‬ ‫برای‬. ‫حاوی‬ ‫های‬ ‫فایل‬byte array‫را‬Binary File‫را‬ ‫رشته‬ ‫حاوی‬ ‫و‬Text File‫می‬‫نامیم‬.
  • 28. ‫متدهای‬File ‫مسیر‬ ‫به‬ ‫دسترسی‬  getAbsolutePath()  getPath()  getParent()  getCanonicalPath() ‫فایل‬ ‫وجود‬ ‫بررسی‬ ‫برای‬  isFile()  isDirectory()  exists()
  • 29. ‫متدهای‬File ‫فایل‬ ‫مشخصات‬ ‫بررسی‬ ‫برای‬  getName()  length()  isAbsolute()  lastModified()  isHidden() ‫فایل‬ ‫های‬ ‫دسترسی‬ ‫بررسی‬ ‫جهت‬  canRead()  canWrite()  canExecute()
  • 30. ‫متدهای‬File ‫سازی‬ ‫ذخیره‬ ‫محل‬ ‫مشخصات‬ ‫بررسی‬ ‫برای‬  getFreeSpace()  getUsableSpace()  getTotalSpace()
  • 31. ‫متدهای‬File ‫گر‬ ‫تسهیل‬ ‫متدهای‬  Boolean createNewFile()  Boolean renameTo(File nf)  Boolean delete()  Boolean setLastModified(long ms)  Boolean setReadOnly()
  • 32. File Streams FileInputStream‫های‬ ‫فایل‬ ‫خواندن‬ ‫برای‬‫باینری‬ FileOutputStream‫برای‬‫فایل‬ ‫در‬ ‫نوشتن‬‫های‬‫باینری‬ FileReader‫متنی‬ ‫های‬ ‫فایل‬ ‫از‬ ‫خواندن‬ ‫برای‬ FileWriter‫متنی‬ ‫های‬ ‫فایل‬ ‫در‬ ‫نوشتن‬ ‫برای‬
  • 33. Serialization ‫ها‬ ‫بایت‬ ‫از‬ ‫ای‬ ‫رشته‬ ‫صورت‬ ‫به‬ ‫اشیا‬ ‫نگهداری‬ ‫فرآیند‬ ‫کالس‬ ‫ساختار‬ ‫نگهداری‬ ‫همانند‬(‫فیلدها‬‫و‬‫متدها‬‫و‬‫انواعشان‬)‫نیز‬ ‫آن‬ ‫های‬ ‫داده‬ ‫شامل‬ ، ‫هست‬. ‫کلیه‬‫فیلدهای‬‫باید‬ ‫کالس‬ ‫پایه‬ ‫غیر‬Serializable‫باشند‬.
  • 34. DeSerialization ‫ها‬ ‫بایت‬ ‫از‬ ‫ای‬ ‫رشته‬ ‫روی‬ ‫از‬ ‫اشیا‬ ‫مجدد‬ ‫ایجاد‬ ‫فرآیند‬ ‫کالس‬ ‫ساختار‬ ‫ایجاد‬ ‫همانند‬(‫فیلدها‬‫و‬‫متدها‬‫و‬‫انواعشان‬)‫نیز‬ ‫آن‬ ‫های‬ ‫داده‬ ‫شامل‬ ، ‫هست‬. ‫نسخه‬ ‫از‬ ‫مستقل‬ ‫فرآیند‬ ‫کل‬JVM‫است‬.
  • 35. ‫سازی‬ ‫پیاده‬Serialization ‫ای‬ ‫پایه‬ ‫های‬ ‫کالس‬ ObjectInputStream ObjectOutputStream transient:‫از‬ ‫جلوگیری‬Serialization‫فیلد‬ ‫در‬‫خاص‬ ‫های‬
  • 37. ObjectOutputStream  ObjectOutputStream objectOutputStream = new ObjectOutputStream(new FileOutputStream("data/person.bin")); Person person = new Person(); person.name = “Saeed Shahsavan"; person.age = 34; objectOutputStream.writeObject(person); objectOutputStream.close();
  • 38. ObjectInputStream  ObjectInputStream objectInputStream = new ObjectInputStream(new FileInputStream("object.data"));  MyClass object = (MyClass) objectInputStream.readObject();  objectInputStream.close();
  • 39. ‫سازی‬ ‫فشرده‬ ‫بسته‬java.util.zip ‫سازی‬ ‫نافشرده‬ ‫و‬ ‫سازی‬ ‫فشرده‬ ‫نحوه‬  GZIPOutputStream gos = new GZIPOutputStream(new FileOutputStream("Myfile.gz"));
  • 40. ‫کالس‬Properties ‫شامل‬key‫و‬value ‫مبنای‬ ‫بر‬ ،‫مقدار‬ ‫آوردن‬ ‫بدست‬ ‫و‬ ‫ذخیره‬ ‫برای‬key ‫زیرکالس‬Hashtable ‫خصیصه‬ ‫ذخیره‬ ‫و‬ ‫استخراج‬ ‫متدهای‬ ‫دارای‬  Properties grades = new Properties(); grades.setProperty("Algebra", "20"); grades.setProperty("Physics", "18"); // Save the grades properties using store() and an output stream FileOutputStream out = new FileOutputStream("schoolGrades.properties"); grades.store(out, null); out.close();
  • 41. ‫کالس‬Preferences ‫نسخه‬ ‫از‬1.4‫به‬Java‫است‬ ‫شده‬ ‫اضافه‬. ‫ذخیره‬preferences‫سازی‬ ‫ذخیره‬ ‫محل‬ ‫گرفتن‬ ‫نظر‬ ‫در‬ ‫بدون‬ ‫توسط‬ ‫مناسب‬ ‫مکان‬API‫شود‬ ‫می‬ ‫مشخص‬. ‫در‬ ‫ویندوز‬ ‫در‬ ‫مثال‬ ‫برای‬Windows registry‫شود‬ ‫می‬ ‫ذخیره‬.  Preferences prefs = Preferences.userRoot();  Preferences prefs = Preferences.systemRoot();  Preferences systemPrefs = Preferences.systemNodeForPackage(MyProgram.class);  prefs.put("hostname", "www.codejava.net"); // put String value  String hostname = prefs.get("hostname", null);