Java Fundamentals: Input/Output

Java Fundamentals: Input/Output

English | MP4 | AVC 1280×720 | AAC 44KHz 2ch | 3h 56m | 626 MB

Java I/O is one of the four core APIs of the JDK, on which many others are built, including Database access, Web Services, and REST Services. In this course, you’ll learn everything you need to write and understand Java I/O code.

The Java I/O API is a fundamental API of the JDK, at the basis of database access APIs and Web access APIs. In this course, Java Fundamentals: Input/Output, you’ll learn all the details of this API, both the theoretical aspects on slides and the patterns during extended live coding sessions. First, you’ll delve into code in action, showing you real life problem solving techniques. Next, you’ll explore how to read and write characters, how to create complex files mixing text and raw bytes, and how to create archive files using the ZIP format. Finally, you’ll discover how to use serialization efficiently and how to deal with errors due to obsolete serialized objects. By the end of this course, you’ll have the necessary knowledge to deal with complex Java I/O problems in existing legacy applications and new developments.

Table of Contents

01 – Course Overview
02 – Introducing Input_Output APIs – What Are You Going to Learn
03 – What Do You Need to Know to Follow This Course
04 – Agenda and Organization of This Course
05 – Introducing Java I_O – Organization, Main Classes, File, and Path
06 – Modeling Disk Files and Paths with the File and Path Objects
07 – Understanding the Path to a File Using the File Object
08 – Introducing the Path Interface from Java 7
09 – Understanding the Path Object, Resolving and Relativizing Paths
10 – Wrapping up Path Relativization
11 – Module Wrap-up
12 – Introducing the Module – Different Ways of Reading Characters
13 – Introducing Readers and the Basic Operations Defined
14 – Understanding How to Read Characters Using a Reader
15 – Dealing with Exceptions When Reading Characters from a Reader
16 – Closing a Reader
17 – Opening and Closing Readers Using the Try-with-resources Pattern
18 – Introducing the Marking, Resetting, and Skipping Operations
19 – Creating Readers for Disk and in-memory Operations
20 – Understanding the Decorator Pattern Used in the Java I_O API
21 – Java 7 Patterns to Create Readers with Specific Charsets
22 – Understanding Read and Close Operations on Decorated Readers
23 – Live Coding – File Creation ad File Operations
24 – Live Coding – Reading a File Line by Line Using a BufferedReader
25 – Live Coding – Improving the Pattern Using the Java 8 Stream API
26 – Wrap-up
27 – Introducing the Module – Different Ways of Writing Characters
28 – Introducing Writers and the Basic Operations Defined
29 – Understanding How to Write Characters and Arrays of Chars
30 – Dealing with Exceptions When Writing Characters Using a Writer
31 – Introducing the Writers to Write to Disk or in-memory Arrays
32 – Understanding How to Create Writers Using the Decorator Pattern
33 – Wrapping up the Decorator Pattern for the Writer Class
34 – Using Factory Methods to Use Specific Charsets and Open Options
35 – Understanding the Flush Operation for Writers
36 – Printing with a Sprintf Format Using the PrintWriter Object
37 – Live Coding – Simple Writing to a Text File
38 – Live Coding – Using the Printwriter Object to Print with a Format
39 – Live Coding – Formatting Dates Using the Print with Format Pattern
40 – Wrap-up
41 – Introducing the Module – Reading and Writing Bytes Operations
42 – Introducing Binary Streams, InputStream, and OutputStream Classes
43 – Reading and Writing Through InputStream and OutputStream
44 – Dealing with Exceptions with InputStream and OutputStream
45 – Concrete Implementations of InputStream and OutputStream
46 – Reading and Writing Primitive Types with Data I_O Streams
47 – Understanding the in-memory Byte Array Streams
48 – Creating a GZip Stream Using the Decorator Pattern
49 – Creating and Reading an Archive ZIP Stream with Complex Content
50 – Live Coding – Writing Primitive Types to a File
51 – Live Coding – Writing UTF Strings to Bytes Files
52 – Live Coding – Writing Ints to Bytes Files with a DataOutputStream
53 – Live Coding – Writing Ints to a File Compressed with GZip
54 – Live Coding – Reading Back Ints with a DataInputStream
55 – Live Coding – Reading Back Ints from a GZip Compressed File
56 – Live Coding – Creating an Archive File with the ZipOutputStream
57 – Live Coding – Reading an Archive File with the ZipInputStream
58 – Wrap-up
59 – Introducing the Module – Reading and Writing Objects
60 – Understanding the Portable Serialization of Objects
61 – Introducing the Serialization Mechanism in the JDK
62 – What Information Do You Need in a Serialized Form of an Object
63 – Making a Class Serializable, Understanding the SerialVersionUID
64 – Computing the SerialVersionUID of a Class
65 – Understanding the Deserialization Process
66 – Wrapping up the Serialization_deserialization Mechanism
67 – Writing and Reading Serialized Objects to Binary Streams
68 – Making Relations Transient to Prevent Serialization
69 – Using ReadObject_WriteObject to Override Default Serialization
70 – Wrapping up the ReadObject_WriteObject Methods
71 – Using Externalizable to Serialize Objects Identity
72 – Serializing Proxy Objects Instead of the Serializable Object
73 – Wrapping up Serialization with Proxy Objects
74 – Wrapping up the 3 Ways of Overriding the Default Serialization
75 – Live Coding – Introducing Serialization and the Serialized File
76 – Live Coding – Making a String Field Transient
77 – Live Coding – Serializing a List of Serializable Objects
78 – Live Coding – Serializing Person Objects Using WriteObject
79 – Live Coding – Serializing Person Objects Using Externalizable
80 – Live Coding – Serializing Person Objects Using a Proxy Class
81 – Live Coding – Deserializing a List of Person Objects
82 – Live Coding – Deserializing Person Objects Using ReadObject
83 – Live Coding – Deserializing Externalized Person Objects
84 – Live Coding – Deserializing Person Objects Serialized with a Proxy
85 – Wrap-up
86 – Introducing the Module – Hybrid Streams of Text and Bytes
87 – Introducing Hybrid Streams
88 – Creating Readers and Writers by Decorating Binary Streams
89 – Introducing the InputStreamReader and OutputStreamWriter Classes
90 – Introducing the Aesop’s Fables Use Case Study
91 – Live Coding – Setting up the Project for Use Case Study
92 – Live Coding – Setting up a Formatter to Write the Header
93 – Live Coding – Writing the Text Header of the Aesop’s Fables File
94 – Live Coding – Writing and Compressing the Text of Each Fable
95 – Live Coding – Concatenating the Compressed Texts
96 – Live Coding – Creating the Correct Header with Offset and Length
97 – Live Coding – Putting the Pieces Together in the Final File
98 – Live Coding – Reading Back a Given Fable from the List
99 – Live Coding – Understanding Mark, Reset, and Skip
100 – Live Coding – Reading and Unzipping the Fable Text
101 – Live Coding – Wrapping up the Aesop’s Fable Use Case Study
102 – Introducing Sockets to Communicate Data Through a Network
103 – Live Coding – Introducing the Client_server Use Case Study
104 – Live Coding – Setting up a Server That Sends a Text Message
105 – Live Coding – Setting up a Client to Communicate with the Server
106 – Wrapping up the Client_server Case Study
107 – Course Wrap-up