版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、输入输出流概述File (文件类)FileInputStreamFileOutputStreamFileReader 和 FileWriterRandomAccessFile PipedInputStream/PipedOutputStreamDateInputStream/ DateOutputStreamObjectInputStream/ ObjectOutputStreamPrintStream/PrintWriter1.概述一个计算机的最简单模型由下列三个管道组成: 输入,处理,输出。Java 的I/O 流库提供大量的流类(在包java.io中), 其中,所有输入流类都是InputS
2、tream(抽象类)或抽象类Reader的子类,而所有输出流类都是OutputStream(抽象类)或抽象类Writer的子类 2.文件(File 类)File 类不允许访问文件的内容,没有可用于访问文件的read() 和write()方法.File 类主要用于命名文件,查询文件属性和处理目录. 2.1. 创建文件对象构造方法:1. public File(String s); (在Windows平台,分割符为“”, 在Linux/Unix上,为“/”, File 提供的参数: File.separator)2. public File(String Directory, String s);
3、 2.2 查询文件属性File 类提供了几个方法, 查询文件属性:文件是否存在文件是否读保护文件是否写保护文件是否是一个目录文件是否隐藏 2.3 查询文件属性String s=e:+File.separator+Thread1.java;File file=new File(s); String exists = file.exists() ? Yes : No; String canRead = file.canRead() ? Yes : No; String canWrite = file.canWrite() ? Yes : No; String isFile = file.isFil
4、e() ? Yes : No; String isHid = file.isHidden() ? Yes : No; String isDir = file.isDirectory() ? Yes : No; String isAbs = file.isAbsolute() ? Yes : No; Attr.java3. FileInputStreamFileInputStream典 型 地 表 示 一 种 顺 序 访 问 的 文 本 文 件。 通过 使 用FileInputStream你 可 以 访 问 文 件 的 一 个 字 节、 几 个 字 节或 整 个 文 件。由InputStream
5、 派生的类 构造方法: FileInputStream(String name); /使用给定的文件名创建一个FileInputStream对象 FileInputStream(File file); /使用File对象创建一个FileInputStream对象 3.1 使用 FileInputStream读取文件使用构造方法来打开一个到达该文件的输入流:FileInputStream myFileStream; myFileStream = new FileInputStream (“myfile.dat);或: File myFile ; FileInputSteam myFileStre
6、am; myFile = new File( myfile.dat ); myFileStream = new FileInputStream(myFile); 3.2 处理 I/O 异常必须使用catch 块检测并处理I/O 异常(IOException ), 如: try FileInputStream ins= new FileInputStream (“myfile.dat); catch (IOException e) /文件I/O 错误 System.out.println(“File read error: ” +e);3.3 从 FileInputStream中读出read()
7、 的成员函数 :int read() /读取一个字节 /到达输入流末尾时, 返回-1int read(byte b) /把多个字节读到字节数组中 /到达输入流末尾时, 返回-1int read(byte b,int off, int len) /off指定read方法把数据存放在字节数组b 中的什么地方。 /len 指定该方法将读取的最大字节数。 /到达输入流末尾时, 返回-13.4 关闭 FileInputStream两 种 方 法 关 闭 : 显式 关 闭 和 隐 式 关 闭, 隐 式 关 闭 是 自 动 垃 圾 回 收 时 的 功 能。 显 式 关 闭 为: myFileStream.c
8、lose(); int b; byte buffer=new byte2500; try File f=new File(E:lanhong, a.txt); FileInputStream readfile=new FileInputStream (f); b=readfile.read(buffer,0,2500); try String str=new String(buffer,0,b,Default); System.out.println(str); catch(UnsupportedEncodingException e) System.out.println(the encod
9、ing was not found: +e); catch (IOException e) System.out.println(File read Error); Example20_1.java4. FileOutputStreamFileOutputStream用 于 向 一 个 文 本 文 件 写 数 据。由OutputStream 派生的类 4.1 打开 FileOutputStream和 打 开 输 入 流 FileInputStream类似 :FileOutput Stream myFileStream; myFileStream = new FileOutputStream (
10、 “file.txt);或: File myFile ; FileOutputSteam myFileStream; myFile = new File(file.txt); myFileStream = new FileOutputStream(myFile); 4.2 写入一个流 write() 的成员函数 : void write(byte b) /写b.length个字节到输出流 void write (byte b, int off, int len)/b 是数据,off 是数据的起始偏移量,len是要输出的字节数 public static void main(String arg
11、s) int b; byte buffer=new byte100; try System.out.println(输入一行文本,并存入磁盘: ); b=System.in.read(buffer); /把从键盘输入的字符存入buffer FileOutputStream writefile=new FileOutputStream(line.txt); writefile.write(buffer,0,b); /通过流把buffer 写入到文件line.txt 中 catch (IOException e) System.out.println(Error ); Example20_3.ja
12、va5. FileReader 和 FileWriter与FileInputStream和FileOutputStream等价的读取器是FileReader类和FileWriter类。它们分别是Reader 和 Writer 的子类。构造方法分别是: FileReader(String filename); FileWriter(String filename);如:FileReader file = new FileReader(“Student.txt”);不能按行读取或写入5. 1 BufferedReaderFileReader类不能读取一行,Java 提供了BufferedReade
13、r 类。构造方法是: BufferedReader(Reader in);读取文本行的方法是: readLine();如: BufferedReader in= BufferedReader(new FileReader(“Student.txt”); P261, 例4 Example20_4 TextArea text; BufferedReader in; Button button; FileReader file; EWindow() super(流的读取); text=new TextArea(10,10); text.setBackground(Color.cyan); try F
14、ile f=new File(E:lanhong, a.txt); file=new FileReader(f); in=new BufferedReader(file); catch(FileNotFoundException e) catch(IOException e) button=new Button(读取); button.addActionListener(this); setLayout(new BorderLayout(); setSize(40,40); setVisible(true); add(text,Center); add(button, South); addW
15、indowListener( new WindowAdapter() public void windowClosing(WindowEvent e)System.exit(0); ); public void actionPerformed(ActionEvent e) String s; if(e.getSource()=button) try while (s=in.readLine()!=null) text.append(s); catch(IOException exp) public class Example20_4 public static void main(String
16、 args) EWindow w=new EWindow(); w.pack(); 5. 2 BufferedWriter与BufferedReader 类相对应的是BufferedWriter 类。构造方法是: BufferedWriter(Writer out);写入文件的方法是: write(String s, int off, int len);如: BufferedWriter out= BufferedWriter(new FileReader(“hello.txt”); out.write(“how are you”, 0, s.length(); /写入缓冲区 out.flus
17、h(); / 要写入文件,必须执行 P263, 例5 Example20_5 TextArea text; BufferedWriter out; Button button; FileWriter tofile; FWindow() super(流的写入); text=new TextArea(10,10); text.setBackground(Color.cyan); try tofile=new FileWriter(hello.txt); out=new BufferedWriter(tofile); catch(FileNotFoundException e) catch(IOEx
18、ception e) button=new Button(写入); button.addActionListener(this);setLayout(new BorderLayout(); setSize(60,70); setVisible(true); add(text,Center); add(button,South);addWindowListener( new WindowAdapter() public void windowClosing(WindowEvent e) setVisible(false);System.exit(0); ); public void action
19、Performed(ActionEvent e) String s; if(e.getSource()=button) try out.write(text.getText(),0,(text.getText().length(); out.flush(); catch(IOException exp) public class Example20_5 public static void main(String args) FWindow w=new FWindow(); w.pack(); ;P267, 例7 Example20_7 class Frame_FileDialog exten
20、ds Frame implements ActionListener FileDialog filedialog_save,filedialog_load; /声明两个文件对话框 MenuBar menubar1; Menu menu1;MenuItem item1,item2; TextArea text; BufferedReader in; FileReader file_reader; BufferedWriter out; FileWriter tofile; Frame_FileDialog() super(带文件对话框的窗口); setSize(60,70); setVisibl
21、e(true); menubar1=new MenuBar(); menu1=new Menu(文件); item1=new MenuItem(打开文件); item2=new MenuItem(保存文件); item1.addActionListener(this); item2.addActionListener(this); menu1.add(item1);menu1.add(item2);menubar1.add(menu1); setMenuBar(menubar1);/下面创建一个依赖于该窗口的保存文件对话框 filedialog_save=new FileDialog(this
22、,保存文件对话框, FileDialog.SAVE); filedialog_save.setVisible(false); /再创建一个依赖于该窗口的打开文件对话框 filedialog_load=new FileDialog(this,打开文件对话框, FileDialog.LOAD); filedialog_load.setVisible(false); filedialog_save.addWindowListener( new WindowAdapter() public void windowClosing(WindowEvent e) filedialog_save.setVis
23、ible(false); ); filedialog_load.addWindowListener( new WindowAdapter() public void windowClosing(WindowEvent e) filedialog_load.setVisible(false); ); addWindowListener( new WindowAdapter() public void windowClosing(WindowEvent e) setVisible(false);System.exit(0); ); public void actionPerformed(Actio
24、nEvent e) if(e.getSource()=item1) filedialog_load.setVisible(true); String s; try /建立到文件file的FileReader 流,该文件通过File 类和对话框来确定。 File file=new File(filedialog_load.getDirectory(),filedialog_load.getFile(); file_reader=new FileReader(file); in=new BufferedReader(file_reader); while(s=in.readLine()!=null
25、) text.append(s+n); catch(FileNotFoundException e1) catch(IOException e2) try in.close(); file_reader.close(); catch(IOException exp) else if(e.getSource()=item2) filedialog_save.setVisible(true); try /建立到文件file的FileWriter流,该文件通过File 类和对话框来确定。 File file=new File(filedialog_save.getDirectory(),filedi
26、alog_save.getFile(); tofile=new FileWriter(file); out=new BufferedWriter(tofile); out.write(text.getText(),0,(text.getText().length(); out.flush(); catch(FileNotFoundException e1) catch(IOException e2) try out.close(); tofile.close(); catch(IOException exp) 6. RandomAccessFile 类由于File 类不能读写文件,可使用Str
27、eam 类或RandomAccessFile 类来读写。RandomAccessFile 类既不是输入流类InputStream类的子类, 也不是输出流类OutputStream类的子类。RandomAccessFile类创建的流的指向既可以作为源,也可以作为目的地。构造方法分别是: RandomAccessFile(String name, String mode); RandomAccessFile(File file, String mode); 参数mode 取r(只读)或rw(可读写),决定文件的访问权利.创建对象时应捕获FileNotFoundException 异常,当流进行读写
28、操作时,应捕获IOException 异常。RandomAccessFile类中的方法: seek(long a); /a 确定文件指针距离文件开头的字节位置。 getFilePointer() 方法获取当前文件的指针的位置。 P271, 例 9in_and_out=new RandomAccessFile(“tom.txt”, “rw”);try for(int i=0; i=0; i-)/一个int 型数据占4个字节,我们从 in_and_out.seek(i*4); /文件的第36个字节读取最后面的一个整数 System.out.println(“,” +in_and_out.readI
29、nt(); /每隔4个字节往前读取一个整数7. 管道流管道是不同线程之间直接传输数据的基本手段。PipedInputStream类创建的对象称为一个输入管道, PipedOutputStream类创建的对象称为一个输出管道 。输出管道与输入管道连接形成一个传输数据的通道,使用这样的管道,用户可以在不同线程之间实现数据共享。7.1 PipedInputStream类PipedInputStream(): 创建一个管道输入流,它还没有被连接,在使用之前必须连接到一个管道输出流。 使用connect(PipedOutputStream c) 方法连接。 PipedInputStream() in =
30、 new PipedInputStream(); PipedOutputStream() out = new PipedOutputStream(); in.connect(out); PipedInputStream(PipedOutputStream a); /创建一个管道输入流,它被连接到由参数a指定的管道输出流。7.2 PipedOutputStream类PipedOutputStream(): 创建一个管道输出流,它还没有被连接,在使用之前必须连接到一个管道输入流。 使用connect(PipedInputStream c) 方法连接。 PipedOutputStream() out
31、 = new PipedOutputStream(); PipedInputStream() in = new PipedInputStream(); out.connect(in); PipedOutputStream(PipedInputStream a); /创建一个管道输出流,它被连接到由参数a指定的管道输入流。7.3 管道流的异常创建管道流都必须捕获IOException 异常。 try PipedInputStream() in = new PipedInputStream(); catch (IOException e) P274, 例 11 Example20_11import
32、 java.io.*;public class Example20_11 public static void main(String args) PipedOutputStream out=null; PipedInputStream in=null; try out=new PipedOutputStream(); in=new PipedInputStream(); in.connect(out); catch (IOException e) thread1 one = new thread1(out,in); thread2 two = new thread2(in,out); one
33、.start(); two.start(); class thread1 extends Thread PipedOutputStream out; PipedInputStream in; byte b=1,2,3; thread1(PipedOutputStream a, PipedInputStream b) try out=a; in=b; out.connect(in); catch (IOException e) public void run() try out.write(b,0,3); catch (IOException e) class thread2 extends T
34、hread PipedOutputStream out; PipedInputStream in; byte a=new byte3; thread2(PipedInputStream a, PipedOutputStream b) try in=a; out=b; in.connect(out); catch (IOException e) public void run() try in.read(a,0,3); for (int i=0; i=2; i+) System.out.println( +ai); int c=a0+a1+a2; System.out.println( +c);
35、 catch (IOException e) 8. 数据流数据流允许程序按与机器无关的风格读取Java 原始数据。构造方法: DateInputStream(InputStream in); DateOutputStream(OutputStream out); 常用方法: P276. P277, 例129. 对象流ObjectInputStream类和ObjectOutputStream类分别是DateInputStream和DateOutputStream类的子类.构造方法: DateInputStream(InputStream in); DateOutputStream(OutputS
36、tream out);ObjectInputStream类和ObjectOutputStream 类创建的对象被称为对象输入流和对象输出流.对象输出流使用writeObject(Object obj) 方法写文件.对象输入流使用readObject() 方法读文件.9.1 创建对象流的方法ObjectInputStream/ DateOutputStream的指向是一个输入/输出流对象,因而要首先用FileInputStream/ FileOutputStream 创建一个文件流. 如: FileInputStream file_in= new FileInputStream(“a.txt”)
37、; ObjectInputStream object_in=new ObjectInputStream(file_in); FileOutputStream file_out= new FileOutputStream(“a.txt”); ObjectOutputStream object_out=new ObjectOutputStream(file_out); P281, 例 14public class Example20_14 extends Frame implements ActionListener TextArea text=null; Button reader=null,
38、writer=null; FileInputStream file_in=null; FileOutputStream file_out=null; ObjectInputStream object_in=null; ObjectOutputStream object_out=null; Example20_14() setLayout(new FlowLayout(); text=new TextArea(6,10); reader=new Button读入对象); writer=new Button(“写出对象); reader.addActionListener(this); writer.addActionListener(this); setVisible(true);add(text); add(reader);add(writer); addWindowListener( new WindowAdapter() public void windowClosing(WindowEvent e) System.exit(0); ); pack(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 小学主题班会课件:责任在心担当于行
- 网络安全我保护小学主题班会课件
- 2026年福建省龙岩市高三下学期命题趋势预测(二)英语(图片版含答案)
- 小学主题班会课件:细心观察求真知,耐心思考明事理
- 市场调研系统化分析手册
- 影视制作导演创作质量绩效衡量表
- 关于2026年客户服务热线升级安排通知函(3篇)
- 协调场地使用与布置事宜通知(6篇)
- 爱护环境从小事:争当环保小卫士小学主题班会课件
- 关于2026年度市场预测信息共享的请求联系信(8篇)
- 2026年4月自考00538中国古代文学史(一)试题及答案含评分参考
- 【《历史地图在高中历史教学中的应用研究》17000字(论文)】
- 2026年《医用X射线诊断与介入放射学》考试复习题库(共350题)
- 2026年湖北省黄冈市八年级地理生物会考真题试卷(+答案)
- 循环流化床锅炉(CFB炉)设计计算大纲
- 【新教材】人教版三年级音乐下册6.1《彼得与狼》(教学课件)
- 江西省金合控股集团有限公司招聘笔试题库2026
- 2026年ESG数字化与AI赋能项目商业计划书
- d二聚体课件教学课件
- 病理科设备SOP标准化与诊断准确性
- 【语文】北京市中关村第二小学小学二年级下册期末试卷
评论
0/150
提交评论