Cop 3503 fall 2012 shayan javed lecture 12
Download
1 / 66

COP 3503 FALL 2012 Shayan Javed Lecture 12 - PowerPoint PPT Presentation


  • 92 Views
  • Uploaded on

COP 3503 FALL 2012 Shayan Javed Lecture 12. Programming Fundamentals using Java. Input/Output (IO). I/O. So far we have looked at modeling classes. I/O. So far we have looked at modeling classes Not much in the way of Input. Input. 3 ways of providing input to the program:. Input.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'COP 3503 FALL 2012 Shayan Javed Lecture 12' - hei


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
Cop 3503 fall 2012 shayan javed lecture 12

COP 3503 FALL 2012ShayanJavedLecture 12

Programming Fundamentals using Java



I/O

  • So far we have looked at modeling classes


I/O

  • So far we have looked at modeling classes

  • Not much in the way of Input...


Input
Input

  • 3 ways of providing input to the program:


Input1
Input

  • 3 ways of providing input to the program:

    • Pass parameters directly to the program


Input2
Input

  • 3 ways of providing input to the program:

    • Pass parameters directly to the program

    • Command-line input from the user


Input3
Input

  • 3 ways of providing input to the program:

    • Pass parameters directly to the program

    • Command-line input from the user

    • Reading in files


Passing parameters
Passing parameters

  • When running the program can directly pass parameters to it


Passing parameters1
Passing parameters

  • When running the program can directly pass parameters to it

    java ProgramNameparameter1 parameter2 ...


Passing parameters2
Passing parameters

public static void main(String[] args) {

// args is the array of all parameters

// args[0] would be the first parameter

}


Passing parameters3
Passing parameters

public static void main(String[] args) {

// args is the array of all parameters

// args[0] would be the first parameter

}

Let’s look at an example


Command line input
Command-line input

  • Receive input from the console during execution


Command line input1
Command-line input

  • Receive input from the console during execution

  • Use the Scanner class


The scanner class
The Scanner class

  • Used for reading data


The scanner class1
The Scanner class

  • Used for reading data

  • Constructors:

    • Scanner(InputStream)

      • InputStream = System.in


The scanner class2
The Scanner class

  • Used for reading data

  • Constructors:

    • Scanner(InputStream)

      • InputStream = System.in

    • Scanner(String)


The scanner class3
The Scanner class

  • Used for reading data

  • Constructors:

    • Scanner(InputStream)

      • InputStream = System.in

    • Scanner(String)

    • Scanner(File)


The scanner class4
The Scanner class

  • Methods:

    • booleanhasNext() : If scanner has more tokens


The scanner class5
The Scanner class

  • Methods:

    • booleanhasNext() : If scanner has more tokens

    • String next() : Returns the next String

    • intnextInt() : Returns the next int

    • doublenextDouble() : Returns the next double


The scanner class6
The Scanner class

  • Methods:

    • booleanhasNext() : If scanner has more tokens

    • String next() : Returns the next String

    • intnextInt() : Returns the next int

    • doublenextDouble() : Returns the next double

    • voiduseDelimiter(pattern: String) : Set’s the delimiting pattern

      (“ “ by default)


The scanner class7
The Scanner class

  • Methods:

    • booleanhasNext() : If scanner has more tokens

    • String next() : Returns the next String

    • intnextInt() : Returns the next int

    • doublenextDouble() : Returns the next double

    • voiduseDelimiter(pattern: String) : Set’s the delimiting pattern

      (“ “ by default)

    • void close(): Closes the Scanner


Command line input2
Command-line input

  • Use the “next..” methods to read from the standard input


Command line input3
Command-line input

  • Use the “next..” methods to read from the standard input

    importjava.util.Scanner;

    Scannerscanner = newScanner(System.in);

    System.out.print(“Enter number1: “);

    double number1 = scanner.nextDouble();

    System.out.print(“Enter number2: “);

    double number2 = scanner.nextDouble();

    System.out.println(“The addition of the two numbers: “ + (number1 + number2));


File input
File Input

  • Ability to read files essential to any language.


File input1
File Input

  • Ability to read files essential to any language.

  • Two ways to store data:

    • Text format:


File input2
File Input

  • Ability to read files essential to any language.

  • Two ways to store data:

    • Text format:

      • Human-readable form

      • Can be read by text editors


File input3
File Input

  • Ability to read files essential to any language.

  • Two ways to store data:

    • Text format:

      • Human-readable form

      • Can be read by text editors

    • Binary format:

      • Used for executable programs

      • Cannot be read by text editors


The file class
The File class

  • java.io package

  • Represents a “file” object

  • Used for input/output through data streams, the file system and serialization.


The file class1
The File class

  • Constructors:

    • File(pathname: String): Creates a File object for the specified

      pathname. pathname = directory or file


The file class2
The File class

  • Constructors:

    • File(pathname: String): Creates a File object for the specified

      pathname. pathname = directory or file

    • File(parent: String, child: String): Creates a File object for the child

      under the directory parent. child may be a filename or subdirectory.


The file class3
The File class

  • Methods:

    • boolean exists() : If the file exists


The file class4
The File class

  • Methods:

    • boolean exists() : If the file exists

    • booleancanRead() : If the file exists and we can read it

    • booleancanWrite() : If the file exists and we can write to it


The file class5
The File class

  • Methods:

    • boolean exists() : If the file exists

    • booleancanRead() : If the file exists and we can read it

    • booleancanWrite() : If the file exists and we can write to it

    • void isDirectory() : if the object is a directory

    • void isFile() : if the object is a file


The file class6
The File class

  • Methods:

    • boolean exists() : If the file exists

    • booleancanRead() : If the file exists and we can read it

    • booleancanWrite() : If the file exists and we can write to it

    • void isDirectory() : if the object is a directory

    • void isFile() : if the object is a file

    • String getName() : Returns the name of the file


The file class7
The File class

  • Methods:

    • boolean exists() : If the file exists

    • booleancanRead() : If the file exists and we can read it

    • booleancanWrite() : If the file exists and we can write to it

    • void isDirectory() : if the object is a directory

    • void isFile() : if the object is a file

    • String getName() : Returns the name of the file

    • boolean delete() : Deletes the file and returns true

      if succeeded

    • renameTo(dest: File) : Tries to rename the file and returns true

      if succeeded


Reading files
Reading Files

  • Use the Scanner class

  • new Scanner(File)


Reading files1
Reading Files

  • How does Scanner really work?


Reading files2
Reading Files

  • How does Scanner really work?

  • Breaks file contents into tokens

    • Uses a delimiter


Reading files3
Reading Files

  • How does Scanner really work?

  • Breaks file contents into tokens

    • Uses a delimiter

    • Delimiter by default is whitespace


Reading files4
Reading Files

  • How does Scanner really work?

  • Breaks file contents into tokens

    • Uses a delimiter

    • Delimiter by default is whitespace

  • Reads a token, converts it to the required type


Reading files5
Reading Files

  • How does Scanner really work?

  • Breaks file contents into tokens

    • Uses a delimiter

    • Delimiter by default is whitespace

  • Reads a token, converts it to the required type

  • Can change the delimiter – useDelimiter() method


Reading files6
Reading Files

// Reads in the file and outputs all the tokens

Scanner input = newScanner(newFile(“test.txt”));

while (input.hasNext()) {

System.out.println(input.next());

}


Reading files7
Reading Files

// Reads in the file and outputs all the tokens

Scanner input = newScanner(newFile(“test.txt”));

while (input.hasNext()) {

System.out.println(input.next());

}

ERROR – WON’T COMPILE


Reading files8
Reading Files

// Reads in the file and outputs all the tokens

Scanner input = newScanner(newFile(“test.txt”));

while (input.hasNext()) {

System.out.println(input.next());

}

ERROR – WON’T COMPILE

The constructor throws a FileNotFoundException


Reading files9
Reading Files

// Reads in the file and outputs all the tokens

try {

Scanner input = newScanner(newFile(“test.txt”));

while (input.hasNext()) {

System.out.println(input.next());

}

} catch (FileNotFoundExceptionfe) {

fe.printStackTrace();

}


Reading files10
Reading files

  • Have to be careful. Suppose a file contains the line:

    • 34 567


Reading files11
Reading files

  • Have to be careful. Suppose a file contains the line:

    • 34 567

      What will be the contents of intValue and line

      after the following code is executed?

      Scanner in = newScanner(newFile(“test.txt”));

      intintValue = in.nextInt();

      String line = in.nextLine();


Reading files12
Reading files

Scannerscanner = newScanner(“file.txt”);

Treats the String “file.txt” as the source, NOT the file “file.txt”


Writing files
Writing Files

  • Use the PrintWriter class


Writing files1
Writing Files

  • Use the PrintWriter class

  • Constructors:

    • PrintWriter(File file): Creates a PrintWriter for the specified File

    • PrintWriter(String name): Creates a PrintWriter for the specified File with the name


The printwriter class
The PrintWriter class

  • Methods:

    • void print(String) : Writes a String


The printwriter class1
The PrintWriter class

  • Methods:

    • void print(String) : Writes a String

    • void print(int) : Writes an int

    • void print(float) : Writes a float


The printwriter class2
The PrintWriter class

  • Methods:

    • void print(String) : Writes a String

    • void print(int) : Writes an int

    • void print(float) : Writes a float

    • void println(String) : Writes a String but also adds a line separator


The printwriter class3
The PrintWriter class

  • Methods:

    • void print(String) : Writes a String

    • void print(int) : Writes an int

    • void print(float) : Writes a float

    • void println(String) : Writes a String but also adds a line separator

    • void flush() : Flushes the output stream. Ensures writing to the file


The printwriter class4
The PrintWriter class

  • Methods:

    • void print(String) : Writes a String

    • void print(int) : Writes an int

    • void print(float) : Writes a float

    • void println(String) : Writes a String but also adds a line separator

    • void flush() : Flushes the output stream. Ensures writing to the file

    • void close() : Closes the output stream.


Writing files2
Writing Files

PrintWriter output = null;

try {

output = newPrintWriter(newFile(“test”));

// creates a file if it does not exist;

// discards the current content if the file exists

output.print("John T Smith "); output.println(90);

output.print("Eric K Jones "); output.println(85);

output.flush();

}

catch(IOExceptionioe) {

System.out.println(ioe.toString());

}

finally { if (output != null) output.close(); }


Writing files3
Writing Files

  • Problem: What if you want to append to the file not replace it?


Writing files4
Writing Files

  • Problem: What if you want to append to the file not replace it?

  • Solution 1: Read the whole file, then write it back.


Writing files5
Writing Files

  • Problem: What if you want to append to the file not replace it?

  • Solution 1: Read the whole file, then write it back.

    • Cumbersome and too much work


Writing files6
Writing Files

  • Problem: What if you want to append to the file not replace it?

  • Solution 1: Read the whole file, then write it back.

    • Cumbersome and too much work

  • Solution 2: Use the FileWriter class


Writing files7
Writing Files

  • Problem: What if you want to append to the file not replace it?

  • Solution 1: Read the whole file, then write it back.

    • Cumbersome and too much work

  • Solution 2: Use the FileWriter class

    • FileWriter(Filefile, boolean append)


Writing files8
Writing Files

  • Problem: What if you want to append to the file not replace it?

  • Solution 1: Read the whole file, then write it back.

    • Cumbersome and too much work

  • Solution 2: Use the FileWriter class

    • FileWriter(Filefile, boolean append)

    • PrintWriter pw = newPrintWriter(new FileWriter(file, true) )


Writing files9
Writing Files

PrintWriter output = null;

try {

output = newPrintWriter(newFile(“test”));

// creates a file if it does not exist;

// discards the current content if the file exists

output.print("John T Smith "); output.println(90);

output.print("Eric K Jones "); output.println(85);

output.flush();

}

catch(IOExceptionioe) {

System.out.println(ioe.toString());

}

finally { if (output != null) output.close(); }


Writing files append
Writing Files – Append

PrintWriter output = null;

try {

output = newPrintWriter( newFileWriter(newFile(“test”), true) );

// creates a file if it does not exist;

// discards the current content if the file exists

output.print("John T Smith "); output.println(90);

output.print("Eric K Jones "); output.println(85);

output.flush();

}

catch(IOExceptionioe) {

System.out.println(ioe.toString());

}

finally { if (output != null) output.close(); }


Summary
Summary

  • Use Scanner for reading from command-line and files.

    • Based on delimiters

  • Use PrintWriter for writing to files


ad