1. 字节流与字符流有什么区别?
答:按处理数据的类型,流分为字节流与字符流,处理的信息的基本单位分别是字节(byte)和字符(char)。输入字节流的类为InputStream,输出字节流为OutputStream,输入字符流为Reader,输出字符流为Writer。输入流最重要的方法是read(),输出流的是write()。
2. 节点流与处理流有什么区别?
答:节点流(Node Stream)直接与特定的地方(如磁盘、内存、设备等)相连,可以从或向一个特定的地方(节点)读写数据,如文件流FileReader。 处理流是对一个已存在的流的连接与封装,通过所封装的流的功能调用实现数据读、写功能。处理流又称过滤流,如缓冲处理流BufferedReader。
3. 标准输入与标准输出?
答:当Java程序需要与外部设备等外界资源做输入、输出的数据交换时,它需要首先创建一个输入或是输出类的对象来完成对这个数据源的连接。从键盘输入数据或向屏幕输出数据,是十分常见的操作,为此而频频创建输入、输出流类对象很不方便。所以,Java系统实现定义好两个流对象,标准输入System.in 和标准输出System.out 。
4. 文本文件及二进制文件流应用实例?
答:
例1,FileCopyByChar.java复制自身文本内容并显示:
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class FileCopyByChar {
public static void main(String[] args) {
try {
FileReader input=new
FileReader("D:/MyCode/java/PracticeIo/src/FileCopyByChar.java");
FileWriter output=new
FileWriter("temp.txt");
int c=input.read();
while(c!=-1) {
output.write(c);
System.out.print((char)c);
c=input.read();
}
input.close();
output.close();
}catch (IOException e) {
System.out.println(e);
}
}
}
例2,FileCopyByLine.java复制自身文本内容并显示,这里用了BufferedReader及BufferedWrite,前者类的重要方法时readLine(),它读入一行字符:
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class FileCopyByLine {
public static void main(String[] args) {
try {
FileReader input=new
FileReader("D:/MyCode/java/PracticeIo/src/FileCopyByLine.java");
BufferedReader bReader=new BufferedReader(input);
FileWriter output=new FileWriter("D:/MyCode/java/PracticeIo/temp.txt");
BufferedWriter bWriter=new BufferedWriter(output);
String string=bReader.readLine();
while(string!=null) {
bWriter.write(string);
bWriter.newLine();//建立新的一行
System.out.println(string);
string=bReader.readLine();
}
bReader.close();
bWriter.close();
}catch (IOException e) {
e.printStackTrace();
}
}
}
例3,上面都是文本文件,这里是二进制文件的,Dump.java流的复制,程序张每次读取1024字节直到结束:
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
public class Dump {
public static void main(String[] args) {
try {
dump(new FileInputStream("D:/MyCode/java/PracticeIo/from.bmp"), //bmp图像为二进制格式
new FileOutputStream("D:/MyCode/java/PracticeIo/to.bmp"));
}catch (FileNotFoundException e1) {
e1.printStackTrace();
}catch (IOException e2) {
e2.printStackTrace();
}
}
public static void dump(InputStream src,OutputStream dest)
throws IOException{
InputStream input=new BufferedInputStream(src);
OutputStream output=new BufferedOutputStream(dest);
byte[] data=new byte[1024];
int length=-1;
while((length=input.read(data))!=-1){
//读入字节放入字节数据data[]中,返回所读到的数目
output.write(data, 0, length);
//将data[]中从0开始的 length的字节写入到流中
}
input.close();
output.close();
}
}
5. Java Application 命令行参数?
答:Java Application 是用命令行来启动执行的,命令行参数就成为向Java Application 传入数据的常用而有效的手段。命令行参数的格式:java类名 参数 参数 … ,参数之间用空格隔开,如参数自身含有空格,可用一对双引号将其引起来。命令行参数被系统已String数据的方式传递个应用程序中的main方法,又参数args接受: public static void main(String[] args) 或者写成可变长参数的形式: public static void main(String... args) ,例如
public class TestCommandLine {
public static void main(String[] args) {
for(int i=0;i<args.length;i++) {
System.out.println("args["+i+"]="+args[i]);
}
}
}
运行结果: