- 执行步骤
- 1.创建读取或写出的File类的对象
- 2.创建输入或输出流
- FileInputStream
- FileInputStream(File file): 创建一个新的FileInputStream,给定要读取的File对象。
- FileInputStream(String fileName): 创建一个新的 FileInputStream,给定要读取的文件的名称。
- FileOutStream
- FileOutStream(File file): 创建一个新的FileOutStream,给定要读取的File对象。
- FileOutStream(String fileName): 创建一个新的 FileOutStream ,给定要读取的文件的名称。
- FileOutStream(File file,boolean append): 创建一个新的FileOutStream,指明是否在现有文件末尾追加内容。
- FileInputStream
- 3.执行具体的读入或写出的过程
- 读入:read(char [] c)
- 写出:write(byte [] b,0,len)
- 4.关闭流资源,避免内存泄漏
- 代码如下:
File f1=new File("D:\\io\\io2\\周杰伦 - 稻香.flac"); File f2=new File("D:\\io\\io1\\周杰伦 - 稻香_copy.flac");//文件名后要加\\周杰伦 - 稻香_copy.flac否则找不到指定文件 FileInputStream i=null; FileOutputStream o=null; try { i=new FileInputStream(f1); o=new FileOutputStream(f2); byte [] b=new byte [1024]; int len; while((len=i.read(b))!=-1) { o.write(b, 0, len); } System.out.println("复制成功"); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally { try { if(i!=null) { i.close(); } if(o!=null) { o.close(); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }
- 注意点:
- 1.因为涉及到流资源的关闭操作,所以出现异常的话,需要使用try-catch-finally的方式来处理异常
- 2.对于输入流来讲,要求File类的对象对应的物理磁盘上的文件必须存在。否则,会报FileNotFoundException异常。对于输出流来讲,File类的对象对应的物理磁盘上的文件可以不存在。
- 如果此文件不存在,则在输出的过程中,会自动创建此文件,并写出数据到此文件中。
- 如果此文件存在,使用
- FileOutStream(File file)或 FileOutStream(File file,false):输出数据过程中,会新建同名的文件对现有的文件进行覆盖。
- FileOutStream(File file,true):输出数据过程中,会在现有的文件的末尾追加写出内容。
- 3.对于字符流,只能用来操作文本文件,不能用来处理非文本文件的。对于字节流,通常是用来处理非文本文件的。但是,如果涉及到文本文件的复制操作,也可以使用字节流。
- 说明:文本文件:.txt、.java、.C、.cpp、.py等。文本文件:.doc、.xls、.jpg、.pdf、.mp3、.mp4、.avi 等
- 常用方法说明:
- 字节输入流:InputStream
- public int read(): 从输入流读取一个字节。返回读取的字节值。虽然读取了一个字节,但是会自动提升为int类型。如果已经到达流末尾,没有数据可读,则返回-1。
- public int read(byte[] b): 从输入流中读取一些字节数,并将它们存储到字节数组 b中 。每次最多读取b.length个字节。返回实际读取的字节个数。如果已经到达流末尾,没有数据可读,则返回-1。
- public int read(byte[] b,int off,int len):从输入流中读取一些字节数,并将它们存储到字节数组 b中,从b[off]开始存储,每次最多读取len个字节 。返回实际读取的字节个数。如果已经到达流末尾,没有数据可读,则返回-1。
- 字节输出流:OutputStream
- public void write(int b):将指定的字节输出流。虽然参数为int类型四个字节,但是只会保留一个字节的信息写出。
- public void write(byte[] b):将 b.length字节从指定的字节数组写入此输出流。
- public void write(byte[] b, int off, int len):从指定的字节数组写入 len字节,从偏移量 off开始输出到此输出流。
- public void flush() :刷新此输出流并强制任何缓冲的输出字节被写出。
- public void close() :关闭此输出流并释放与此流相关联的任何系统资源。
- 说明:close()方法,当完成流的操作时,必须调用此方法,释放系统资源。
- 字节输入流:InputStream
FileInputStream 和 FileOutputStream 的使用(字节)
最新推荐文章于 2024-03-31 22:12:31 发布
该文章讲述了如何在Java中使用FileInputStream和FileOutputStream进行文件的读取和写出操作,包括创建流对象、复制文件过程以及异常处理。强调了字节流在处理文本和非文本文件中的应用,并提到了关闭流资源的重要性。
摘要由CSDN通过智能技术生成