Presentation is loading. Please wait.

Presentation is loading. Please wait.

Part I General Principles

Similar presentations


Presentation on theme: "Part I General Principles"— Presentation transcript:

1 Part I General Principles
Simple Java I/O Part I General Principles 16-Apr-18

2 Streams All modern I/O is stream-based
A stream is a connection to a source of data or to a destination for data (sometimes both) An input stream may be associated with the keyboard An input stream or an output stream may be associated with a file Different streams have different characteristics: A file has a definite length, and therefore an end Keyboard input has no specific end

3 open use close Why Java I/O is hard Java I/O is very powerful, with an overwhelming number of options Any given kind of I/O is not particularly difficult The trick is to find your way through the maze of possibilities

4 Types of Streams There are 2 kinds of streams byte streams
character streams

5 Character Streams Character streams create text files.
These are files designed to be read with a text editor. Java automatically converts its internal unicode characters to the local machine representation (ASCII in our case).

6 Byte Streams Byte streams create binary files.
A binary file essentially contains the memory image of the data. That is, it stores bits as they are in memory. Binary files are faster to read and write because no translation need take place. Binary files, however, cannot be read with a text editor.

7 Classes Java has 6 classes to support stream I/O
File: An object of this class is either a file or a directory. OutputStream: base class for byte output streams InputStream: base class for byte input streams

8 Writer: base class for character output streams.
Reader: base class for character input streams. RandomAccessFile: provides support for random access to a file. Note that the classes InputStream, OutputStream, Reader, and Writer are abstract classes. Three stream objects are automatically created for every application: System.in, System.out, and System.err.

9 How to do I/O import java.io.*; Open the stream
Use the stream (read, write, or both) Close the stream

10 open use close Opening a stream There is data external to your program that you want to get, or you want to put data somewhere outside your program When you open a stream, you are making a connection to that external place Once the connection is made, you forget about the external place and just use the stream

11 Output to files Printing into an output file, general syntax:
PrintStream: An object in the java.io package that lets you print output to a file. System.out is also a PrintStream. Any methods you have used on System.out (such as print, println) will work on every PrintStream. Printing into an output file, general syntax: PrintStream <name> = new PrintStream(new File("<file name>")); If the given file does not exist, it is created. If the given file already exists, it is overwritten.

12 Printing to files, example
PrintStream output = new PrintStream(new File("output.txt")); output.println("Hello, file!"); output.println("This is a second line of output."); You can use similar ideas about prompting for file names here.

13 Closing A stream is an expensive resource
open use close Closing A stream is an expensive resource There is a limit on the number of streams that you can have open at one time You should not have more than one stream open on the same file You must close a stream before you can open it again Always close your streams! Java will normally close your streams for you when your program ends, but it isn’t good style to depend on this

14 Text files Text (.txt) files are the simplest kind of files
Text files can be used by many different programs Formatted text files (such as .doc files) also contain binary formatting information Only programs that “know the secret code” can make sense of formatted text files Compilers, in general, work only with text

15 Part IV Scanner and printf
Simple Java I/O Part IV Scanner and printf 16-Apr-18

16 java.util.Scanner Java finally has a fairly simple way to read input
First, you must create a Scanner object To read from the keyboard (System.in), do: Scanner scanner = new Scanner(System.in); To read from a file, do: File myFile = new File("myFileName.txt"); Scanner scanner = new Scanner(myFile); You have to be prepared to handle a FileNotFound exception You can even “read” from a String: Scanner scanner = new Scanner(myString); This can be handy for parsing a string

17 Using the Scanner You can read a line at a time
First, you should make sure there is something to scan scanner.hasNext()  boolean You wouldn’t use this when reading from the keyboard You can read a line at a time scanner.nextLine()  String Or, you can read one “token” at a time A token is any sequence of nonwhitespace characters scanner.next ()  String You must be prepared to deal with exceptions Eclipse will tell you what you need to do nextLine and next return Strings, which you can convert to numbers or other types if you like There are also methods to check for and return primitives directly

18 Scanning for primitives
You can read in and convert text to primitives: boolean b = sc.nextBoolean(); byte by = sc.nextByte(); short sh = sc.nextShort(); int i = sc.nextInt(); long l = sc.nextLong(); float f = sc.nextFloat(); double d = sc.nextDouble(); And test if you have something to read: hasNextBoolean() hasNextByte() hasNextShort() hasNextInt() hasNextLong() hasNextFloat() hasNextDouble()

19 Formatted output Java 5 has a printf method, similar to that of C
Each format code is % width code Some format codes are s for strings, d for integers, f for floating point numbers Example: double pi = Math.PI; System.out.printf("%8s %-8s %6d %-6d %8f %-8.2f :) \n", "abc", "def", 123, 456, pi, pi); System.out.printf("%8s %-8s %6d %-6d", "abcdef", "ghijkl", 12345, 6789); Output: abc def :) abcdef ghijkl

20 Simple Java I/O Part V Serialization 16-Apr-18

21 Serialization You can also read and write objects to files
Object I/O goes by the awkward name of serialization Serialization in other languages can be very difficult, because objects may contain references to other objects Java makes serialization (almost) easy

22 Conditions for serializability
If an object is to be serialized: The class must be declared as public The class must implement Serializable The class must have a no-argument constructor All fields of the class must be serializable: either primitive types or serializable objects

23 Implementing Serializable
To “implement” an interface means to define all the methods declared by that interface, but... The Serializable interface does not define any methods! Question: What possible use is there for an interface that does not declare any methods? Answer: Serializable is used as flag to tell Java it needs to do extra work with this class

24 Part III JFileChoosers
Simple Java I/O Part III JFileChoosers 16-Apr-18

25 About JFileChoosers The JFileChooser class displays a window from which the user can select a file The dialog window is modal--the application cannot continue until it is closed Applets cannot use a JFileChooser, because applets cannot access files

26 Typical JFileChooser window

27 JFileChooser constructors
Creates a JFileChooser starting from the user’s directory JFileChooser(File currentDirectory) Constructs a JFileChooser using the given File as the path JFileChooser(String currentDirectoryPath) Constructs a JFileChooser using the given path

28 Useful JFileChooser methods I
int showOpenDialog(Component enclosingJFrame); Asks for a file to read; returns a flag (see below) int showSaveDialog(Component enclosingJFrame); Asks where to save a file; returns a flag (see below) Returned flag value may be: JFileChooser.APPROVE_OPTION JFileChooser.CANCEL_OPTION JFileChooser.ERROR_OPTION

29 Useful JFileChooser methods II
File getSelectedFile() showOpenDialog and showSaveDialog return a flag telling what happened, but don’t return the selected file After we return from one of these methods, we have to ask the JFileChooser what file was selected If we are saving a file, the File may not actually exist yet—that’s OK, we still have a File object we can use

30 Using a File Assuming that we have successfully selected a File:
File file = chooser.getSelectedFile(); if (file != null) { String fileName = file.getCanonicalPath(); FileReader fileReader = new FileReader(fileName); BufferedReader reader = new BufferedReader(fileReader); } File file = chooser.getSelectedFile(); if (file != null) { String fileName = file.getCanonicalPath(); FileOutputStream stream = new FileOutputStream(fileName); writer = new PrintWriter(stream, true); }

31 The End “There is no reason anyone would want a computer in their home.” Ken Olson, President/founder of Digital Equipment Corp., “I think there is a world market for maybe five computers.” Thomas Watson Chairman of IBM,|


Download ppt "Part I General Principles"

Similar presentations


Ads by Google