Java语言的输入输出
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
13
4 数据输入输出流
数据流的建立 FileOutputStream fos= new FileOutputStream(”file2.txt")); DataInputStream dis= new DataInputStream(fos) 数据输出流可以是一个已经建立好的输入数据流 对象,例如网络的连结,文件等. 下面的例子显示如何利用数据输入输出流往文件 中写不同类型的数据
15
4 数据输入输出流
DataInputStream dis=new DataInputStream( new FileInputStream(”a.txt")); try{ System.out.println("\t "+dis.readBoolean()); System.out.println("\t "+dis.readByte()); System.out.println("\t "+dis.readChar()); System.out.println("\t "+dis.readDouble()); System.out.println("\t "+dis.readFloat()); System.out.println("\t "+dis.readInt()); System.out.println("\t "+dis.readLong()); System.out.println("\t "+dis.readShort()); }finally{dis.close();} }} Stream\datainputandoutput--->f5.bat
输入流 输出流
file2.txt
11
import java.io.*; class filestream 7.3 static void main(String args[]) File I/O { public { try{ File inFile=new File(”file1.txt"); File outFile=new File(”file2.txt"); FileInputStream fis=new FileInputStream(inFile); FileOutputStream fos=new FileOutputStream(outFile); int c; while((c=fis.read())!=-1) fos.write(c); fis.close(); fos.close(); }catch(FileNotFoundException e) { System.out.println("FileStreamsTest: "+e); }catch(IOException e) { System.err.println("FileStreamsTest: "+e); 12 }}}
9
3 File I/O
文件对象的建立 File fp=new File(“tempfile.txt”); 对文件操作要定义文件流 FileInputStream类用来打开一个输入文件 FileOutputStream类用来打开一个输出文件
write read
输出文件
输入文件ቤተ መጻሕፍቲ ባይዱ
10
3 File I/O
文件流的建立 FileInputStream in= new FileInputStream(fp); FileOutputStream out= new FileOutputStream(fp); 例:文件拷贝(注意要捕获文件异常) 输入流的参数是用于输入的文件名 输出流的参数是用于输出的文件名
file1.txt
数据流的运用
1 输入输出方法 2 输入输出流的基类 3 File I/O 4 数据输入输出流 5 文件的其它操作 6 小结
1
1 输入输出方法
什么是数据流 ?
文件, 文件
起 点
文件
程序
文件
程序
终 点
网络端点
数据流
终端 网络端点
数据流是指所有的数据通信通道 在java中有关流的操作使用java.io.* 出于安全的考虑,小应用不能实现文件I/O流
7
2 输入输出流的基类
方法read()提供了三种从流中读数据的方法. int read():读一个整数 int read(byte b[]):读多个字节到数组中 int read(byte,int off,int len); 属于OutputStream类的方法有: write(int b):将一个整数输出到流中 write(byte b[]):将数组中的数据输出到流中 write(byte b[], int off,int len):将数组b中从off 指定的位置开始len长度的数据输出到流中
14
4 数据输入输出流
class datainput_output { public static void main(String args[]) throws IOException { FileOutputStream fos=new FileOutputStream(“a.txt”); DataOutputStream dos=new DataOutputStream (fos); try{ dos.writeBoolean(true); dos.writeByte((byte)123); dos.writeChar('J'); dos.writeDouble(3.141592654); dos.writeFloat(2.7182f); dos.writeInt(1234567890); dos.writeLong(998877665544332211L); dos.writeShort((short)11223); }finally{ dos.close(); }
18
5 文件的其它操作
例: 获取当前目录下所有文件名和文件的尺寸: import java.io.*; public class file_size { public static void main(String args[]) { File files=new File(“.”); String file_list[]=files.list(); for(int i=0;i<file_list.length;i++) { File current_file=new File(file_list[i]); System.out.println(file_list[i]+ current_file.length()); } }
8
2 输入输出流的基类
flush():将缓冲区中的数据强制送出 close():关闭流. PrintStream类 println()不属于OutputStream类,它是 PrintStream类的子类,能提供复杂的输出 PrintStream类的方法有: write, flush, checkError,print, println,close. 其中println可以输出多种形式的数据.例如: println(String s), println(char c)等
6
2 输入输出流的基类
Java中每一种流的基本功能依赖于基本类 InputStream和OutputStream 它们是抽象类,不能直接使用 属于InputStream类的方法有: read():从流中读入数据 skip():跳过流中若干字节数 available():返回流中可用字节数 mark():在流中标记一个位置 reset():返回标记过得位置 markSupport():是否支持标记和复位操作 close():关闭流
19
6 小结
在Java中有数据传输的地方都用到I/O流 (通常是文件,网络,内存和标准输入输出等) InputStream 和OutputStream是所有 I/O流的祖先(只有RandomAccessFile类是 ),read write 一个例外),read和write是它们最基本的方 法,读写单位是字节.
5
1 输入输出方法
为什么输入的是字符,输出是乱码? 原因:System.out.println(bArray)输出的是数 组的地址而不是字符 改进:将字符数组变换成字符串 原来是:System.out.println(bArray); 现在为:String s=new String(bArray,0); System.out.println(s); System.in是属于BufferedInputStream类型 System.out是属于PrintStream类型 System.err也是属于PrintStream类型
4
1 输入输出方法
import java.io.*; class IOTest { public static void main(String args[]) {try { byte bArray[]=new byte[128]; System.out.println(“Enter something:”); System.in.read(bArray); System.out.print(“You entered:”); System.out.println(bArray); }catch(IOException ioe) { System.out.println(ioe.toString()); } } }
4 数据输入输出流
什么时候需要数据输入输出流? 文件流和缓冲区流的处理对象是字节或字节数 组,利用数据输入输出流可以实现对文件的不 同数据类型的读写. DataInputStream、DataOutputStream 一种较为高级的数据输入输出方式,除了字节和 字节数组,还可以处理int,float,boolean等类型. 还可以用readLine方法读取一行信息 可使用的方法: write,writeBoolean…,read,readByte…等
16
4 数据输入输出流
DateLine(InputStream in)(计算字符和行数) { DataInputStream data= new DataInputStream(in); String currentLine; int lineCount=0; int charCount=0; while((currentLine=dataIn.readLine())!=null) { ++lineCount; charCount+=currentLine.length(); } return (charCount/(float)lineCount); }
2
1 输入输出方法
System类管理标准输入输出流和错误流 System.out: 把输出送到缺省的显示(通常是显示器) System.in 从标准输入获取输入(通常是键盘) System.err 把错误信息送到缺省的显示 每当main方法被执行时,就自动生成上述三 个对象
3
1 输入输出方法
public class ReadHello { public static void main(String args[]) { char inChar; System.out.println(“Enter a character:”); try{ inChar=(char)System.in.read(); System.out.println(“ “+ inChar); }catch(IOException e) { System.out.println(“Error reading from user”); } } }
17
5 文件的其它操作
使用文件类获取文件的路径信息 设f是一个文件对象 File f=new File(“data”,temp.dat”); f.getName():返回文件名 temp.dat f.getParent():返回文件所在目录名 data f.getPath():返回文件路径 data\temp.dat f.getAbsolutePath():返回绝对路 c:\myprog\data\temp.dat
4 数据输入输出流
数据流的建立 FileOutputStream fos= new FileOutputStream(”file2.txt")); DataInputStream dis= new DataInputStream(fos) 数据输出流可以是一个已经建立好的输入数据流 对象,例如网络的连结,文件等. 下面的例子显示如何利用数据输入输出流往文件 中写不同类型的数据
15
4 数据输入输出流
DataInputStream dis=new DataInputStream( new FileInputStream(”a.txt")); try{ System.out.println("\t "+dis.readBoolean()); System.out.println("\t "+dis.readByte()); System.out.println("\t "+dis.readChar()); System.out.println("\t "+dis.readDouble()); System.out.println("\t "+dis.readFloat()); System.out.println("\t "+dis.readInt()); System.out.println("\t "+dis.readLong()); System.out.println("\t "+dis.readShort()); }finally{dis.close();} }} Stream\datainputandoutput--->f5.bat
输入流 输出流
file2.txt
11
import java.io.*; class filestream 7.3 static void main(String args[]) File I/O { public { try{ File inFile=new File(”file1.txt"); File outFile=new File(”file2.txt"); FileInputStream fis=new FileInputStream(inFile); FileOutputStream fos=new FileOutputStream(outFile); int c; while((c=fis.read())!=-1) fos.write(c); fis.close(); fos.close(); }catch(FileNotFoundException e) { System.out.println("FileStreamsTest: "+e); }catch(IOException e) { System.err.println("FileStreamsTest: "+e); 12 }}}
9
3 File I/O
文件对象的建立 File fp=new File(“tempfile.txt”); 对文件操作要定义文件流 FileInputStream类用来打开一个输入文件 FileOutputStream类用来打开一个输出文件
write read
输出文件
输入文件ቤተ መጻሕፍቲ ባይዱ
10
3 File I/O
文件流的建立 FileInputStream in= new FileInputStream(fp); FileOutputStream out= new FileOutputStream(fp); 例:文件拷贝(注意要捕获文件异常) 输入流的参数是用于输入的文件名 输出流的参数是用于输出的文件名
file1.txt
数据流的运用
1 输入输出方法 2 输入输出流的基类 3 File I/O 4 数据输入输出流 5 文件的其它操作 6 小结
1
1 输入输出方法
什么是数据流 ?
文件, 文件
起 点
文件
程序
文件
程序
终 点
网络端点
数据流
终端 网络端点
数据流是指所有的数据通信通道 在java中有关流的操作使用java.io.* 出于安全的考虑,小应用不能实现文件I/O流
7
2 输入输出流的基类
方法read()提供了三种从流中读数据的方法. int read():读一个整数 int read(byte b[]):读多个字节到数组中 int read(byte,int off,int len); 属于OutputStream类的方法有: write(int b):将一个整数输出到流中 write(byte b[]):将数组中的数据输出到流中 write(byte b[], int off,int len):将数组b中从off 指定的位置开始len长度的数据输出到流中
14
4 数据输入输出流
class datainput_output { public static void main(String args[]) throws IOException { FileOutputStream fos=new FileOutputStream(“a.txt”); DataOutputStream dos=new DataOutputStream (fos); try{ dos.writeBoolean(true); dos.writeByte((byte)123); dos.writeChar('J'); dos.writeDouble(3.141592654); dos.writeFloat(2.7182f); dos.writeInt(1234567890); dos.writeLong(998877665544332211L); dos.writeShort((short)11223); }finally{ dos.close(); }
18
5 文件的其它操作
例: 获取当前目录下所有文件名和文件的尺寸: import java.io.*; public class file_size { public static void main(String args[]) { File files=new File(“.”); String file_list[]=files.list(); for(int i=0;i<file_list.length;i++) { File current_file=new File(file_list[i]); System.out.println(file_list[i]+ current_file.length()); } }
8
2 输入输出流的基类
flush():将缓冲区中的数据强制送出 close():关闭流. PrintStream类 println()不属于OutputStream类,它是 PrintStream类的子类,能提供复杂的输出 PrintStream类的方法有: write, flush, checkError,print, println,close. 其中println可以输出多种形式的数据.例如: println(String s), println(char c)等
6
2 输入输出流的基类
Java中每一种流的基本功能依赖于基本类 InputStream和OutputStream 它们是抽象类,不能直接使用 属于InputStream类的方法有: read():从流中读入数据 skip():跳过流中若干字节数 available():返回流中可用字节数 mark():在流中标记一个位置 reset():返回标记过得位置 markSupport():是否支持标记和复位操作 close():关闭流
19
6 小结
在Java中有数据传输的地方都用到I/O流 (通常是文件,网络,内存和标准输入输出等) InputStream 和OutputStream是所有 I/O流的祖先(只有RandomAccessFile类是 ),read write 一个例外),read和write是它们最基本的方 法,读写单位是字节.
5
1 输入输出方法
为什么输入的是字符,输出是乱码? 原因:System.out.println(bArray)输出的是数 组的地址而不是字符 改进:将字符数组变换成字符串 原来是:System.out.println(bArray); 现在为:String s=new String(bArray,0); System.out.println(s); System.in是属于BufferedInputStream类型 System.out是属于PrintStream类型 System.err也是属于PrintStream类型
4
1 输入输出方法
import java.io.*; class IOTest { public static void main(String args[]) {try { byte bArray[]=new byte[128]; System.out.println(“Enter something:”); System.in.read(bArray); System.out.print(“You entered:”); System.out.println(bArray); }catch(IOException ioe) { System.out.println(ioe.toString()); } } }
4 数据输入输出流
什么时候需要数据输入输出流? 文件流和缓冲区流的处理对象是字节或字节数 组,利用数据输入输出流可以实现对文件的不 同数据类型的读写. DataInputStream、DataOutputStream 一种较为高级的数据输入输出方式,除了字节和 字节数组,还可以处理int,float,boolean等类型. 还可以用readLine方法读取一行信息 可使用的方法: write,writeBoolean…,read,readByte…等
16
4 数据输入输出流
DateLine(InputStream in)(计算字符和行数) { DataInputStream data= new DataInputStream(in); String currentLine; int lineCount=0; int charCount=0; while((currentLine=dataIn.readLine())!=null) { ++lineCount; charCount+=currentLine.length(); } return (charCount/(float)lineCount); }
2
1 输入输出方法
System类管理标准输入输出流和错误流 System.out: 把输出送到缺省的显示(通常是显示器) System.in 从标准输入获取输入(通常是键盘) System.err 把错误信息送到缺省的显示 每当main方法被执行时,就自动生成上述三 个对象
3
1 输入输出方法
public class ReadHello { public static void main(String args[]) { char inChar; System.out.println(“Enter a character:”); try{ inChar=(char)System.in.read(); System.out.println(“ “+ inChar); }catch(IOException e) { System.out.println(“Error reading from user”); } } }
17
5 文件的其它操作
使用文件类获取文件的路径信息 设f是一个文件对象 File f=new File(“data”,temp.dat”); f.getName():返回文件名 temp.dat f.getParent():返回文件所在目录名 data f.getPath():返回文件路径 data\temp.dat f.getAbsolutePath():返回绝对路 c:\myprog\data\temp.dat