null第十章第十章输入与输出null10.1 输入\输出类库
10.2 标准输入\输出及标准错误
10.3 文件操作10.1 输入\输出类库10.1 输入\输出类库 Java的输入输出功能必须借助于输入输出类库java.io包来实现,这个包中的类大部分是用来完成流式输入输出的类。 1. 流 1. 流 流是指在计算机的输入与输出之间的数据的序列,而Java中的数据流有位流(字节流)和字符流之分。
就流的运动方向而言,流可分为输入流(input stream)和输出流(output stream),输入流代
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
从外设流入计算机的数据序列;输出流代表从计算机流向外设的数据序列。流、程序、外设之间的关系 流、程序、外设之间的关系 数据键盘程序输入流输出流数据打印机显示器2 输入输出流类2 输入输出流类 在Java的流类中,最基本的类有两个:
输入流类InputStream和输出流类OutputStream。这两个是具有最基本的输入输出功能的抽象类,其他流类都是为了方便处理各种特定流而设置的,属于InputStream或OutputStream的子类。 InputStream类InputStream类
int read( )
long skip( )
void mark( )
void close( )
void reset( )
InputStream
FileInputStream
FilterInputStream
DataInputStream
BufferedInputStream InputStream类的主要方法InputStream子类的继承关系 OutputStream类OutputStream类void write( )
void flush( )
void close( )OutputStream
FileOutputStream
FilterOutputStream
PrintStream
DataOutputStreamOutputStream类的主要方法OutputStream子类的继承关系 Reader类Reader类int read( )
long skip( )
void mark( )
void close( )
void reset( )
Reader
BufferedReader:
InputStreamReader
FileReader Reader类的主要方法Reader子类的继承关系 Writer类Writer类void write( )
void flash( )
void close( )
Writer
PrintWriter
BufferedWriter
OutputStreamWriter
FileWriter Writer类的主要方法Writer子类的继承关系 10.2 标准输入输出及标准错误10.2 标准输入输出及标准错误 Java系统预先定义好3个流对象分别表示标准输出设备、标准输入设备和标准错误设备,它们分别是System.out,System.in和System.err。
System.out是System的一个静态属性,属于PrintStream类对象,用于输出字节数据流,对应标准输出设备:屏幕。
System.in 也是System的一个静态属性,属于InputStream类对象,用于输入字节数据流,对应标准输入设备:键盘。
System.err 也是System的一个静态属性,属于PrintStream类对象,用于系统错误信息的输出,对应屏幕。 1 标准输入1 标准输入 Java的标准输入设备键盘用System.in表示,System.in属于InputStream类对象。当需要从键盘输入数据时,可以直接使用该类的read()方法或子类定义的其他方法 。Java实例——从键盘输入字符 Java实例——从键盘输入字符 import java.io.*;
public class StandardIn1
{
public static void main(String[] args) throws IOException
{
char c;
System.out.println(" 输入一个字符");
c=(char)System.in.read();
System.out.print( "输入的字符是:"+c);
}
}例 --利用read()语句暂缓程序运行 例 --利用read()语句暂缓程序运行 import java.io.IOException;
public class StandardIn2
{
public static void main(String[] args) throws IOException
{
for (int i=1; i<=5; i++)
System.out.println(i);
System.out.println("按回车键继续... ");
System.in.read();
System.out.print( "程序继续运行!");
}
} 例 --输入字符串 例 --输入字符串 import java.io.*;
public class StandardIn3
{
public static void main(String[] args) throws IOException
{
InputStreamReader iin=new InputStreamReader(System.in);
BufferedReader bin =new BufferedReader(iin); //创建String s; //一个使用指定大小输入缓冲区的缓冲字符float f; //输入流。
int i;
boolean b;
System.out.println(“输入任一字符串”);
s=bin.readLine(); //读取一个文本行null System.out.println("输入浮点数");
f=Float.parseFloat(bin.readLine());
System.out.println("输入整数");
i=Integer.parseInt(bin.readLine());
System.out.println("输入布尔量");
b=new Boolean(bin.readLine()).booleanValue();
System.out.println("输入的字符串:"+s);
System.out.println("输入的浮点数:"+f);
System.out.println("输入的整数:"+i);
System.out.println("输入的布尔量:"+b);
}
}2 标准输出2 标准输出 Java的标准输入设备:显示器用System.out表示,System.out属于PrintStream类对象。
利用PrintStream类的print()或println()方法可以非常方便地输出各类数据,这两个方法的唯一区别是:print()输出后不换行,而println()方法输出完毕后要换行 。3 标准错误3 标准错误 运行或编译Java程序时,各种错误信息输出到标准错误设备,即显示器。在Java中,标准错误设备用System.err表示。System.err属于PrintStream类对象。10.3 文件操作10.3 文件操作 在程序中要对磁盘文件或目录进行操作,首先要对文件或目录建立连接,为此Java提供了File类。File类也位于java.io包中,但不是流类,而是专门用来管理磁盘文件和目录。
一个File类对象表示一个磁盘文件或目录,其对象属性中包含了文件或目录的相关信息,如名称、长度、所含文件个数等,其方法可以完成对文件或目录的常用管理操作,如创建、删除等。 1 建立File对象1 建立File对象File类提供了3个不同的构造方法 :
File(String path)
String类参数path指定所建对象对应的磁盘文件名或目录名及其路径名。
File(String path, String name)
此构造方法中的参数path表示文件或目录的路径,参数name表示文件或目录名。
File(File dir, String name)
此构造方法中的参数dir表示一个磁盘目录对应的File对象,参数name表示文件名或目录名。 2 File对象的属性和操作2 File对象的属性和操作 public String getName():得到文件名
public String getPath():得到文件路径
public boolean exists():判断文件或目录是否存在
public long length():返回文件的字节数
public boolean canRead():返回当前文件是否可读
public boolean canWrite():返回当前文件是否可写
public boolean equals(File file):比较文件或目录
public boolean isFile():检测是否是文件
public boolean isDirectiry():检测是否是目录
public boolean renameTo(File file):重命名文件
public void delete():删除文件 FileOutputStream流类FileOutputStream流类FileOutputStream流类的构造方法有两个:
FileOutputStream(String fileName):
参数fileName表示带路径的磁盘文件名。
FileOutputStream(File file):
参数file表示为磁盘文件所建立的File对象名 Java实例—以字节流方式写入文件 Java实例—以字节流方式写入文件 import java.io.*;
public class File2{
public static void main(String[] args) throws IOException{
char ch;
File file1=new File(“d:\\newFile.txt”); //新建一个文件
try{
FileOutputStream fout= new FileOutputStream(file1);
System.out.println("输入任一字符串,以?结束");
ch= (char) System.in.read();
while (ch !='?'){
fout.write(ch);
ch=(char) System.in.read(); }
fout.close();
}null catch (FileNotFoundException e)
{ System.out.println(e);}
catch (IOException e)
{ System.out.println(e);}
}
}
FileInputStream流类FileInputStream流类FileInputStream类的构造方法有两个:
FileInputStream(String fileName):
参数fileName表示带路径的磁盘文件名。
FileInputStream(File file):
参数file表示为磁盘文件所建立的File对象名 。Java实例—以字节流方式读磁盘文件 Java实例—以字节流方式读磁盘文件 import java.io.*;
public class File3{
public static void main(String[] args) throws IOException{
int ch;
File file1=new File(“d:\\newFile.txt");
try{
FileInputStream fin= new FileInputStream(file1);
System.out.println("文件中的信息为:");
ch= fin.read();
while (ch !=-1){
System.out.print((char)ch);
ch =fin.read(); }
fin.close(); } nullcatch (FileNotFoundException e)
{ System.out.println(e); }
catch (IOException e)
{ System.out.println(e); }
}
}
DataOutputStream流类DataOutputStream流类 使用DataOutputStream类向文件中写入各种类型数据的操作步骤是:
为磁盘文件建立File类对象;
为该File对象建立FileOutputStream类流对象,建立其与磁盘文件的连接;
为该FileOutputStream类对象建立DataOutputStream类对象,利用DataOutputStream类的writeInt(),writeFloat(),writeDouble(),writeBoolean()等方法分别向文件中写入整型、单精度型、双精度型、布尔型等数据;
写入操作完成后,利用close()方法将流关闭,断开与磁盘文件的联系。 Java实例—向磁盘文件写入各类数据Java实例—向磁盘文件写入各类数据import java.io.*;
public class File4
{
public static void main(String[] args)
{
int ch;
InputStreamReader iin=new InputStreamReader(System.in);
BufferedReader bin =new BufferedReader(iin);
File file1=new File(“d:\\dataFile.txt");
try
{
FileOutputStream fout= new FileOutputStream(file1);
DataOutputStream dout =new DataOutputStream(fout);
System.out.println(" 输入整数");
int i=Integer.parseInt(bin.readLine());
System.out.println(" 输入浮点数"); Java实例——(续)Java实例——(续) float f=Float.parseFloat(bin.readLine());
System.out.println(" 输入布尔量");
boolean b=new Boolean(bin.readLine()).booleanValue();
dout.writeInt(i);
dout.writeFloat(f);
dout.writeBoolean(b);
dout.close();
}
catch (FileNotFoundException e)
{ System.out.println(e);}
catch (IOException e)
{ System.out.println(e);}
}
}
例--从磁盘文件读取各类数据 例--从磁盘文件读取各类数据 import java.io.*;
public class File5
{
public static void main(String[] args) throws IOException
{
int ch;
File file1=new File(“d:\\lianxi\\dataFile.txt");
File file2=new File(“d:\\lianxi\\outFile.txt");
try
{
FileInputStream fin= new FileInputStream(file1);
DataInputStream din =new DataInputStream(fin);
int i=din.readInt();
float f=din.readFloat();
boolean b=din.readBoolean(); din.close();nullFileOutputStream fout= new FileOutputStream(file2);
DataOutputStream dout =new DataOutputStream(fout);
dout.writeInt(i);
dout.writeFloat(f);
dout.writeBoolean(b);
dout.close();
System.out.println("整数:"+i);
System.out.println("浮点数:"+f);
System.out.println("布尔量:"+b);
}
catch (FileNotFoundException e)
{ System.out.println(e);}
catch (IOException e)
{ System.out.println(e);}
} }Writer和ReaderWriter和Reader 以字符流方式向文件写入或从文件中读取数据,可以使用Writer和Reader类及其子类。
Writer和Reader类都是抽象类,不能建立它们的对象,所以只能通过它们子类对象对文件进行操作。常用的Writer类的子类包括FileWriter类和BufferedFileWriter类。
FileWriter类构造方法如下:
FileWriter(String fileName):
参数fileName表示带路径的磁盘文件名。
FileWriter(File file):
参数file表示为磁盘文件所建立的File对象名。
注:使用FileWriter进行文件操作时,为了减少磁盘读写次数,常常使用具有缓冲功能的BufferedWriter类。 Java实例—以字符流方式写入文件 Java实例—以字符流方式写入文件 import java.io.*;
public class File8 {
public static void main(String args[]) throws Exception {
InputStreamReader iin =new InputStreamReader(System.in);
BufferedReader br=new BufferedReader(iin);
FileWriter fw1=new FileWriter(“d:\\dataFile.txt");
BufferedWriter bw = new BufferedWriter(fw1);
String s;
while (true){
System.out.print("输入一个字符串:");
System.out.flush();
s=br.readLine();
if (s.length()==0) break;
bw. write(s);
bw.newLine(); }
bw.close(); }
}例--以字符流方式读取文件 例--以字符流方式读取文件 public class File9
{
public static void main(String args[]) throws Exception
{
FileReader fr1 = new FileReader("c:\\jdk1.3\\example\\dataFile.txt");
BufferedReader br1 = new BufferedReader(fr1);
BufferedWriter bw1 = new BufferedWriter(
new FileWriter("c:\\jdk1.3\\example\\targetFile.txt"));
int lineNum=0;
String s=br1.readLine();null while (s != null)
{
lineNum++;
bw1.write(String.valueOf(lineNum));
bw1.write(" ");
bw1.write(s);
bw1.newLine();
s=br1.readLine();
}
bw1.close();
}
}例--以字符流方式向显示器输出 例--以字符流方式向显示器输出 import java.io.*;
public class File11
{
public static void main(String args[]) throws Exception
{
FileReader fr1 = new FileReader(“d:\\dataFile.txt");
BufferedReader br1 = new BufferedReader(fr1);
BufferedWriter bw1 = new BufferedWriter(
new OutputStreamWriter(System.out));
int lineNum=0;
String s=br1.readLine();nullwhile (s != null)
{
lineNum++;
bw1.write(String.valueOf(lineNum));
bw1.write(" ");
bw1.write(s);
bw1.newLine();
s=br1.readLine();
}
bw1.close();
}
}
nullimport java.io.*;
public class TestFileStream{
public static void main(String[] args){
int b=0;
FileInputStream in=null;
try{ in=new FileInputStream("d:\\lianxi\\File5.java");
}catch(FileNotFoundException e){
System.out.println("找不到文件");
System.exit(-1); }
try{ long num=0;
while((b=in.read())!=-1){
System.out.print((char)b);
num++; }
in.close();
System.out.println();
System.out.println("共读取了"+num+"个字节");
}catch(IOException e1)
{
System.out.println("文件读取错误");
System.exit(-1);
}}}nullimport java.io.*;
public class TestFileReader{
public static void main(String[] args){
FileReader fr=null;
int c=0;
try{
fr=new FileReader("d:\\lianxi\\TestFileReader");
int ln=0;
while((c=fr.read())!=-1){
System.out.print((char)c);
}
fr.close();
}catch(FileNotFoundException e){
System.out.println("找不到指定文件");
}catch(IOException e){
System.out.println("文件读取错误");
}}}
import java.io.*;
public class TestFileWriter{
public static void main(String[] args){
FileWriter fw=null;
try{
fw=new FileWriter(“d:\\lianxi\\a.txt”);
for(int c=0;c<=99;c++){
fw.write(c);
}
fw.close();
}catch(IOException e1){
e1.printStackTrace();
System.out.println(“文件写入错误”);
System.exit(-1);
} }}import java.io.*;
public class TestFileWriter{
public static void main(String[] args){
FileWriter fw=null;
try{
fw=new FileWriter(“d:\\lianxi\\a.txt”);
for(int c=0;c<=99;c++){
fw.write(c);
}
fw.close();
}catch(IOException e1){
e1.printStackTrace();
System.out.println(“文件写入错误”);
System.exit(-1);
} }}