一、输入(读)
1、定义:实现由文件将数据传给内存变量
2、输入类:Scanner。
实现数据的输入,由外设(键盘、文件)通过输入通道,将数据(按类型)提供给相应的变量。
3、输入类的使用
(1)导入类:
import java.util.Scanner;
(2)从什么地方输入数据,要定义通道
a.从键盘输入:
Scanner sc=newScanner(System.in);
b.从文本文件输入:
File f1=new File("路径");
Scanner sc=newScanner(文件对象名);
(3)利用读的方法,将数据传到,变量
输入对象(sc)的方法
hasNext():如果该Scanner的输入中后面还有信息(数据),则返回true,可以继续输入或获取下一个数据。
next(): 输入一个字符串,该串不能含空格。
nextByte(): 输入一个字节型数据
nextShort():输入一个短整型数据
nextInt(): 输入一个整型数据
nextLong(): 输入一个长整型据
nextFloat(): 输入一个单精度浮点实数
nextDouble():输入一个双精度浮点实数
nextBoolean ():输入一个布尔型数据
nextLine():输入一个字符串,以回车键结束该串。
(4)、关闭通道
sc.close();
4、例:下图是一个登记成绩的数据文件,请根据该文件中的信息,将文件信息读出,并计算总成绩显示在显示器上。
解:
public static void main(String[] args)throws FileNotFoundException{
String s1,s2,s3,s4,xm;
int cj1,cj2,cj3,zcj;
File f=newFile("d:\\io1.txt");
try {
f.createNewFile();
} catch (IOExceptione) {
e.printStackTrace();
}
Scanner sc=newScanner(f);
s1=sc.next(); s2=sc.next(); s3=sc.next(); s4=sc.next();
System.out.println(s1+" "+s2+" "+s3+" "+s4+" "+"总成绩");
while(sc.hasNext()){
xm=sc.next();
cj1=sc.nextInt();
cj2=sc.nextInt();
cj3=sc.nextInt();
zcj=cj1+cj2+cj3;
System.out.println(xm+" "+cj1+" "+cj2+" "+cj3+" "+zcj);
}
sc.close();
}
二、输出(写)
1、定义:实现将内存变量中的值保存到文件中
2、输出类:PrintWriter
实现数据的输出,由外设内存变量通过输入通道,将数据(按类型)存到相应的文件中
3、输出类的使用
(1)导入类
import java.io.PrintWriter;
(2)输出到哪里,需建立通道
a.输出到控制台
PrintWriter pw=new PrintWriter(System.out)
//System.out.println()与pw.println()等价
b.输出到文件
PrintWriter pw=new PrintWriter(文件对象名)
(3)利用写的方法,将变量的值写到文件中
输出类对象(pw)的方法:
void print(boolean b) : 打印 boolean 值。
void print(char c) : 打印字符。
void print(char[] s) : 打印字符数组。
void print(double d) : 打印 double 精度浮点数。
void print(float f) : 打印一个浮点数。
void print(int i) : 打印整数。
void print(long l) : 打印 long 整数。
void print(Object obj) : 打印对象。
void print(String s) : 打印字符串
(4)关闭数据通道;
4、例:右图是一个登记成绩的数据文件,请根据该文件中的信息,将文件信息读出,计算总成绩,并将信息写入文件io_2.txt中。
解:
public static void main(String[] args) throws FileNotFoundException {
String s1,s2,s3,s4,xm;
int cj1,cj2,cj3,zcj;
File f1=new File(“d:\\io_2.txt");
PrintWriter pw=new PrintWriter(f1) ;
File f2=new File(“d:\\io_1.txt");
Scanner sc=new Scanner(f2);
s1=sc.next(); s2=sc.next(); s3=sc.next(); s4=sc.next();
pw.println(s1+" "+s2+" "+s3+" "+s4+" "+"总成绩");
while(sc.hasNext()){
xm=sc.next();
cj1=sc.nextInt();
cj2=sc.nextInt();
cj3=sc.nextInt();
zcj=cj1+cj2+cj3;
pw.println(xm+" "+cj1+" "+cj2+" "+cj3+" "+zcj);
}
pw.close();
sc.close();
System.out.println("运行结束!");
}
ps:以上两种方法需知道文件的内容结构。