做弹幕网站有哪些,无锡市建设局网站,网站问责建设书,南通网站排名方法一、File 类 先看一下File 类的定义 [java] view plaincopy public class File extends Object implements Serizliable ComparableFile 从定义看#xff0c;File类是Object的直接子类#xff0c;同时它继承了Comparable接口可以进行数组的排序。 File类的操作包括… 一、File 类 先看一下File 类的定义 [java] view plaincopy public class File extends Object implements Serizliable ComparableFile 从定义看File类是Object的直接子类同时它继承了Comparable接口可以进行数组的排序。 File类的操作包括文件的创建、删除、重命名、得到路径、创建时间等以下是文件操作常用的函数。 File类的操作 1、创建文件注意File.separator可以解决跨操作系统的问题。 下面的例子是一创建一个文件如果该文件存在则删除否则创建该文件。 [java] view plaincopy package cn.com.qiang.FiloDemo; import java.io.File; import java.io.IOException; public class FileDemo2 { public static void main(String[] args) { File file new File(D:\\test.txt); if(file.exists()){ file.delete(); }else{ try{ file.createNewFile(); }catch (IOException e){ e.printStackTrace(); } } } } 2、文件的类型函数 file.isFile(); //判断是不是文件 file.isDirectory();//判断是不是目录 3、列出目录的内容 pulbic String[] list();//列出所有文件名和目录名 public File[] listFiles();//列出所有文件和目录 二、IO 流 与 C 一样Java 也有流这个概念下面先回忆一下什么是流 1、什么是流 流(stream)的概念源于UNIX中管道(pipe)的概念。在UNIX中管道是一条不间断的字节流用来实现程序或进程间的通信或读写外围设备、外部文件等。 一个流必有源端和目的端它们可以是计算机内存的某些区域也可以是磁盘文件甚至可以是Internet上的某个URL。 流的方向是重要的根据流的方向流可分为两类输入流和输出流。用户可以从输入流中读取信息但不能写它。相反对输出流只能往输入流写而不能读它。 实际上流的源端和目的端可简单地看成是字节的生产者和消费者对输入流可不必关心它的源端是什么只要简单地从流中读数据而对输出流也可不知道它的目的端只是简单地往流中写数据。 形象的比喻——水流 文件程序 文件和程序之间连接一个管道水流就在之间形成了,自然也就出现了方向可以流进也可以流出.便于理解这么定义流 流就是一个管道里面有流水这个管道连接了文件和程序。 2、流的分类 1、Java.io包中的类对应两类流一类流直接从指定的位置如磁盘文件或内存区域读或写这类流称为结点流(node stream)其它的流则称为过滤器(filters)。过滤器输入流往往是以其它输入流作为它的输入源经过过滤或处理后再以新的输入流的形式提供给用户过滤器输出流的原理也类似。 2、Java的常用输入、输出流 java.io包中的stream类根据它们操作对象的类型是字符还是字节可分为两大类 字符流和字节流。 •Java的字节流 InputStream是所有字节输入流的祖先而OutputStream是所有字节输出流的祖先。 •Java的字符流 Reader是所有读取字符串输入流的祖先而writer是所有输出字符串的祖先。 结合开始所说的输入/输出流 出现了个一小框架。 字节流 字符流 输入流 InputStream Reader 输出流 OutputStream Writer 下面分别对这两种流进行介绍 JAVA字节流 •FileInputStream和FileOutputStream 这两个类属于结点流第一个类的源端和第二个类的目的端都是磁盘文件它们的构造方法允许通过文件的路径名来构造相应的流。如 FileInputStream infile new FileInputStream(myfile.dat); FileOutputStream outfile new FileOutputStream(results.dat); 要注意的是构造FileInputStream, 对应的文件必须存在并且是可读的而构造FileOutputStream时如输出文件已存在则必须是可覆盖的。 •BufferedInputStream和BufferedOutputStream 它们是过滤器流其作用是提高输入输出的效率。 •DataInputStream和DataOutputStream 这两个类创建的对象分别被称为数据输入流和数据输出流。这是很有用的两个流它们允许程序按与机器无关的风格读写Java数据。所以比较适合于网络上的数据传输。这两个流也是过滤器流常以其它流如InputStream或OutputStream作为它们的输入或输出。 下面举个例子实现文件的复制功能 [java] view plaincopy package cn.com.farsight.writedemo; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.util.Date; public class InputStremdemo { public static void main(String[] args) throws IOException { FileInputStream fis new FileInputStream(D:\\feiq.rar); FileOutputStream fos new FileOutputStream(C:\\feiq.rar); BufferedInputStream bfis new BufferedInputStream(fis); BufferedOutputStream bfos new BufferedOutputStream(fos); System.out.println(new Date()); int i 0; // byte [] buf new byte[128]; while((i bfis.read())!-1){ bfos.write(i); } fis.close(); fos.close(); bfis.close(); bfos.close(); System.out.println(new Date()); } } 执行结果如下 [java] view plaincopy Tue Jan 26 20:24:50 CST 2016 Tue Jan 26 20:24:50 CST 2016 文件只有600多K速度还是挺快的。 Java的字符流 字符流主要是用来处理字符的。Java采用16位的Unicode来表示字符串和字符对应的字符流按输入和输出分别称为reader和writer。 •InputStreamReader和OutputStreamWriter 在构造这两个类对应的流时它们会自动进行转换将平台缺省的编码集编码的字节转换为Unicode字符。对英语环境其缺省的编码集一般为ISO8859-1。 •BufferedReader和BufferedWriter 这两个类对应的流使用了缓冲能大大提高输入输出的效率。这两个也是过滤器流常用来对InputStreamReader和OutputStreamWriter进行处理。 FileReader 和FileWriter 1、FileWriter类 构造方法 [java] view plaincopy FileWriter fw new FileWriter(String fileName);//创建字符输出流类对象和已存在的文件相关联。文件不存在的话并创建。 如FileWriter fw new FileWriter(C:\\demo.txt); 主要方法 void write(String str) // 写入字符串。当执行完此方法后字符数据还并没有写入到目的文件中去。此时字符数据会保存在缓冲区中。 此时在使用刷新方法就可以使数据保存到目的文件中去。 void flush() // 刷新该流中的缓冲。将缓冲区中的字符数据保存到目的文件中去。 void close() // 关闭此流。在关闭前会先刷新此流的缓冲区。在关闭后再写入或者刷新的话会抛IOException异常。 2、FileReader类 构造方法 [java] view plaincopy FileReader fr new FileReader(String fileName);//使用带有指定文件的String参数的构造方法。创建该输入流对象。并关联源文件。 主要方法 int read(char []cbuf);//将字符读入数组。返回读取的字符数。如果已经到达尾部则返回-1。 void close(); //关闭此流对象。释放与之关联的所有资源。 下面是个例子 [java] view plaincopy package cn.com.qiang.FiloDemo; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.PrintWriter; public class FiloDemo3 { public static void main(String[] args){ File fin,fout; BufferedReader bf null; PrintWriter pw null; try{ fin new File(D:\\面向对象面向过程.txt); //注意文件与程序都要在同一个文件夹下。zzc.txt为要被复制的文件。 fout new File(D:\\copy面向对象面向过程.txt); //如果没有会自动创建。 bf new BufferedReader(new FileReader(fin)); pw new PrintWriter(fout); //PrintWriter为打印流也可以使用BufferedWriter. String line bf.readLine(); while(line!null){ pw.println(line); line bf.readLine(); } }catch(Exception e){ e.printStackTrace(); }finally{ try{ //关闭 文件。 if(bf!null){ bf.close(); bf null; } if(pw!null){ pw.close(); pw null; } }catch(Exception e){ e.printStackTrace(); } } } } 附字节流和字符流的区别重点 字节流没有缓冲区是直接输出的而字符流是输出到缓冲区的。因此在输出时字节流不调用colse()方法时信息已经输出了而字符流只有在调用close()方法关闭缓冲区时信息才输出。要想字符流在未关闭时输出信息则需要手动调用flush()方法。