System.out.printf("%s:%d", name,age);
一、标准输入输出
1、标准输出
System.out.println("hell,world!");
2、标准输入
通过控制台进行输入,首先需要构造一个Scanner对象,并与“标准输入流”System.in 关联
示例:
import java.util.Scanner;
public class InputTest {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in=new Scanner(System.in);
System.out.println("what's your name");
String name=in.nextLine();
System.out.println("how old are you?");
int age=in.nextInt();
System.out.println(name+":"+age);
}
}
3、格式化输出
printf()和format()
format方法可以用于PrintStream或PrintWrtier对象,其中也包括System.out对象
d表示十进制数、s表示字符创、c表示字符、f表示浮点数、x表示十六进制整数、o表示八进制整数、b表示布尔、h表示散列吗、tx表示时间、
System.out.printf("%s:%d", name,age);
System.out.format("%s:%d",name,age);
4、formatter类
在java中,所有新的格式化功能都由java.util.Formatter类处理。
5、String.format()
参考c中的sprintf()方法,以生成格式化的String对象。String.format()是一个static方法,接受与Formatter.format()方法一样的参数,但是返回
一个String对象。
String.format("%d,%d,%s",id1,id2,msg);
二、文件输入输出
任何自InputStream或Reader派生而来的类都包含名为read()的基本方法,用于读取单个字节或者字节数组
1)文件输入
1、利用scanner类进行输入
Scanner的构造器可以接受任何类型的输入对象,包括File对象,InputStream,String对象
Scanner in=new Scanner(new File("D:\\test.txt"));
2、InputStream类型
主要面向字节的I/O功能
InputStream的作用是用来表示那些从不同数据源产生输入的类。这些数据包括:1)字节数组、2)String对象、3)文件
4)管道、5)一个由其他种类的流组成的序列,以便我们可以将它们收集合并到一个流内。6)其他数据源
每一个数据源都有相对应的InputStream子类,例如ByteArrayInputStream,StringBufferInputStream,FileInputStream
PipedInputStream、SequenceInputS、FilterInputs。另外,FilterInputStream也属于一种InputStream
3、Reader类型
主要面向字符和兼容unicode的I/O功能
4、缓冲输入文件:面向字符使用Reader类型
BufferedReader fin=new BufferedReader(new FileReader("D:\\2.txt"));
String s;
StringBuilder sb=new StringBuilder();
While((s=fin.readline)!=null){
sb.append(s+"\n");
}
fin.close();
其中字符串sb用来累计文件的全部内容(包括必须添加的换行符,因为readLine()已将他们删掉)
5、格式化内存输入
要读取格式化数据,可以使用DataInputStream,它是一个面向字节的I/O类,因此使用InputStream而不是Reader类。
例:
import java.io.*;
public class FormattedMemoryInput {
/**
* @param args
*/
public static void main(String[] args)
throws IOException{
// TODO Auto-generated method stub
try{
DataInputStream in= new DataInputStream(
new ByteArrayInputStream(
BufferedInputFile.read(
"D:\\workspace\\Test\\src\\io\\FormattedMemoryInput.java").getBytes()));
while(in.available()!=0)
System.out.print((char)in.readByte());
}catch(EOFException e){
System.err.println("End of Stream");
}
}
}
BufferedInputFile为ByteArrayInputStream提供字节数组。
2)文件输出
任何自OutputStream或Writer派生而来的类都包含名为writer()的基本方法,用于写单个字节或者字节数组。
1、利用PrintWriter类输出
PrintWriter out=new PrintWriter(new File("D:\\test.txt"));
2、OutputStream类型
主要面向字节的I/O功能
该类别决定了输出所要去的往的目标:字节数组、文件或管道。另外FilterOutputStream为“装饰器”类提供了一个基类。
ByteArrayOutputstream、FileOutputstream、PipedOutputstream、FilterOutputStream
3、Writer类型
主要面向字符和兼容unicode的I/O功能
4、文件缓冲输出
首先创建一个与制定文件连接的FileWriter,然后用BufferedWriter将其包装用以缓冲输出。
PrintWriter out=new PrintWriter(new BufferedWriter(new FileWriter(file)));
5、格式化数据输出
DataOutputStream out=new DataOutputStream(
new BufferedOutputStream(
new FileOutputStream("Data.txt")));