corejava第9版
This commit is contained in:
1 parent
a900ff96aa
commit
75e83a331f
1025 files changed
+121606
No files matched your search
@@ -0,0 +1,98 @@
|
||||
package textFile;
|
||||
|
||||
import java.io.*;
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* @version 1.13 2012-05-30
|
||||
* @author Cay Horstmann
|
||||
*/
|
||||
public class TextFileTest
|
||||
{
|
||||
public static void main(String[] args) throws IOException
|
||||
{
|
||||
Employee[] staff = new Employee[3];
|
||||
|
||||
staff[0] = new Employee("Carl Cracker", 75000, 1987, 12, 15);
|
||||
staff[1] = new Employee("Harry Hacker", 50000, 1989, 10, 1);
|
||||
staff[2] = new Employee("Tony Tester", 40000, 1990, 3, 15);
|
||||
|
||||
// save all employee records to the file employee.dat
|
||||
try (PrintWriter out = new PrintWriter("employee.dat", "UTF-8"))
|
||||
{
|
||||
writeData(staff, out);
|
||||
}
|
||||
|
||||
// retrieve all records into a new array
|
||||
try (Scanner in = new Scanner(
|
||||
new FileInputStream("employee.dat"), "UTF-8"))
|
||||
{
|
||||
Employee[] newStaff = readData(in);
|
||||
|
||||
// print the newly read employee records
|
||||
for (Employee e : newStaff)
|
||||
System.out.println(e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Writes all employees in an array to a print writer
|
||||
* @param employees an array of employees
|
||||
* @param out a print writer
|
||||
*/
|
||||
private static void writeData(Employee[] employees, PrintWriter out) throws IOException
|
||||
{
|
||||
// write number of employees
|
||||
out.println(employees.length);
|
||||
|
||||
for (Employee e : employees)
|
||||
writeEmployee(out, e);
|
||||
}
|
||||
|
||||
/**
|
||||
* Reads an array of employees from a scanner
|
||||
* @param in the scanner
|
||||
* @return the array of employees
|
||||
*/
|
||||
private static Employee[] readData(Scanner in)
|
||||
{
|
||||
// retrieve the array size
|
||||
int n = in.nextInt();
|
||||
in.nextLine(); // consume newline
|
||||
|
||||
Employee[] employees = new Employee[n];
|
||||
for (int i = 0; i < n; i++)
|
||||
{
|
||||
employees[i] = readEmployee(in);
|
||||
}
|
||||
return employees;
|
||||
}
|
||||
|
||||
/**
|
||||
* Writes employee data to a print writer
|
||||
* @param out the print writer
|
||||
*/
|
||||
public static void writeEmployee(PrintWriter out, Employee e)
|
||||
{
|
||||
GregorianCalendar calendar = new GregorianCalendar();
|
||||
calendar.setTime(e.getHireDay());
|
||||
out.println(e.getName() + "|" + e.getSalary() + "|" + calendar.get(Calendar.YEAR) + "|"
|
||||
+ (calendar.get(Calendar.MONTH) + 1) + "|" + calendar.get(Calendar.DAY_OF_MONTH));
|
||||
}
|
||||
|
||||
/**
|
||||
* Reads employee data from a buffered reader
|
||||
* @param in the scanner
|
||||
*/
|
||||
public static Employee readEmployee(Scanner in)
|
||||
{
|
||||
String line = in.nextLine();
|
||||
String[] tokens = line.split("\\|");
|
||||
String name = tokens[0];
|
||||
double salary = Double.parseDouble(tokens[1]);
|
||||
int year = Integer.parseInt(tokens[2]);
|
||||
int month = Integer.parseInt(tokens[3]);
|
||||
int day = Integer.parseInt(tokens[4]);
|
||||
return new Employee(name, salary, year, month, day);
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user