FileInputStream
构造方法摘要FileInputStream(File file) 通过打开一个到实际文件的连接来创建一个 FileInputStream,该文件通过文件系统中的 File 对象file 指定。FileInputStream(FileDescriptor fdObj) 通过使用文件描述符 fdObj 创建一个 FileInputStream,该文件描述符表示到文件系统中某个实际文件的现有连接。FileInputStream(String name) 通过打开一个到实际文件的连接来创建一个 FileInputStream,该文件通过文件系统中的路径名 name 指定。 方法摘要 intavailable() 返回下一次对此输入流调用的方法可以不受阻塞地从此输入流读取(或跳过)的估计剩余字节数。 voidclose() 关闭此文件输入流并释放与此流有关的所有系统资源。protected voidfinalize() 确保在不再引用文件输入流时调用其 close 方法。 FileChannelgetChannel() 返回与此文件输入流有关的唯一 FileChannel 对象。 FileDescriptorgetFD() 返回表示到文件系统中实际文件的连接的 FileDescriptor 对象,该文件系统正被此 FileInputStream 使用。 intread() 从此输入流中读取一个数据字节。 intread(byte[] b) 从此输入流中将最多 b.length 个字节的数据读入一个 byte 数组中。 intread(byte[] b, int off, int len) 从此输入流中将最多 len 个字节的数据读入一个 byte 数组中。 longskip(long n) 从输入流中跳过并丢弃 n 个字节的数据。
FileOutputStream
构造方法摘要FileOutputStream(File file) 创建一个向指定 File 对象表示的文件中写入数据的文件输出流。FileOutputStream(File file, boolean append) 创建一个向指定 File 对象表示的文件中写入数据的文件输出流。FileOutputStream(FileDescriptor fdObj) 创建一个向指定文件描述符处写入数据的输出文件流,该文件描述符表示一个到文件系统中的某个实际文件的现有连接。FileOutputStream(String name) 创建一个向具有指定名称的文件中写入数据的输出文件流。FileOutputStream(String name, boolean append) 创建一个向具有指定 name 的文件中写入数据的输出文件流。 方法摘要 voidclose() 关闭此文件输出流并释放与此流有关的所有系统资源。protected voidfinalize() 清理到文件的连接,并确保在不再引用此文件输出流时调用此流的 close 方法。 FileChannelgetChannel() 返回与此文件输出流有关的唯一 FileChannel 对象。 FileDescriptorgetFD() 返回与此流有关的文件描述符。 voidwrite(byte[] b) 将 b.length 个字节从指定 byte 数组写入此文件输出流中。 voidwrite(byte[] b, int off, int len) 将指定 byte 数组中从偏移量 off 开始的 len 个字节写入此文件输出流。 voidwrite(int b) 将指定字节写入此文件输出流。
实现文件复制
public class CopyFileInputStreamToFileOutputStream { public static void main(String[] args) { File inputFile=new File("E:1.dat"); //必须先创建目录 File originalFile=new File("E:2"); if(!originalFile.exists()){ originalFile.mkdirs(); } //再创建文件 File outputFile=new File(originalFile,"2.dat"); /** * //必须先创建目录//再创建文件(自己写的小工具中的) * // d://Docid docidDir = p.getProperty("allTxt.url"); File dir = new File(docidDir); if (!dir.exists()) { dir.mkdirs(); } File f = new File(dir, now + "@Docid.txt"); saveToFile(f, docIdsStr.toString(), now); */ try { FileInputStream inputStream=new FileInputStream(inputFile); FileOutputStream outputStream=new FileOutputStream(outputFile); //因为FileInputStream是字节流所以写入,字节数组中。 //字符流FileReader就写入 char[] buf=new char[2]; byte n[]=new byte[10]; int result=inputStream.read(n); //==0的话会陷入死循环中 while(result!=-1){ outputStream.write(n); result=inputStream.read(n); } } catch (Exception e) { e.printStackTrace(); } }}