IO流
2014-04-14 21:34
48 查看
说到IO流,那么输入\ 输出流的作用是什么呢?在什么情况下用到它呢?所谓的知其然并且要知其所以然嘛!一个Java程序必须有与外界交流的能力,这就要求Java语言必须提供输入输出功能。说到这里我们就必须引入 java.io包
因为就文件或流进行操作,就必须声明:import java.io.*;那么又为什么提到文件操作呢?--java程序中对文件的操作,主要就是读取和写入,这两个操作都要使用到输入输出流,在对文件进行写入时使用的是输入流,而读取文件使用的是输出流。
一: File类
File类常用的构造方法有:
1.File(String pathname) //pathname 可以是目录或文件名
2.File f1 = new File("Demo.txt"); //在当前目录下创建一个与"Demo.txt"文件名相关联的文件对象
3.File f2 = new File("C:\\Users\\Administrator\\Desktop\\io"); //指明详细的路径以及文件名,注意双斜线
File类常用的方法有:
1.boolean exists() //判断文件是否存在,存在返回true,否则返回false
2.boolean isFile() //判断是否为文件,是文件返回true,否则返回false
3.boolean isDirectory() //判断是否为目录,是目录返回true,否则返回false
4.String getName() //获得文件的名声
5.String getAbsolutePath() //获得文件的决定路径
6.long length() //获取文件的长度(字节数)
7boolean createNewFile()//创建新文件,创建成功返回true,否则返回false,有可能抛出IOException异常,必须捕捉
8.boolean delete() //删除文件,删除成功返回true,否则返回false
9.File[] listFile() //返回文件夹内的子文件与子文件夹的数组
二:流
流可以分为字节流和字符流。
字节流:字节流是指8位的通用字节流,以字节为基本单位,在java.io包中,对于字节流进行操作的类大部分继承于InputStream(输入字节流)类和OutputStream(输出字节流)类,因为InputStream和OutputStream是抽象类,所以不能直接生成对象。可以通过它们的子类来生存程序中所需要的对象。
字符流:字符流是指16位的Unicode字符流,以字符(两个字节)为基本单位,非常适合处理字符串和文本,对字符流进行操作的类大部分继承于Reader(读取流)类和Writer(写入流)类
1.使用字节流读取文件
FileInputStream 和 FileOutputStream 类用于从文件读取字节和向文件写入字节,它们的所以方法都是从InputStream 和 OutputStream 继承的,这两个类没有定义新的方法。在创建FileInputStream类时,首先要检查一下指定的文件是否存在。如果不存在那么从文件读取就会失败,这时会产生一个FileNotFoundException异常。
FileInputStream的构造方法有:
FileInputStream(File file) throws FileNotFoundException
FileInputStream(String name) throws FileNotFoundException
FileInputStream的常用方法:
int read() throws IOException //如果读到末尾则返回-1
int read(byte[] b) throws IOException //将读到的数据存放到byte型数组中,一样读到末尾时返回-1
void close() throws IOException
FileOutputStream的构造方法:
FileOutputStream(File file) throws FileNotFoundException
FileOutputStream(String name) throws FileNotFoundException
FileOutputStream(File file,boolean append) throws FileNotFoundException
FileOutputStream(String name,boolean append) throws FileNoFoundException //如果append设为true,将保存现有文件中的内容,并把新的数据追加到现有文件。
2.使用字符流读写文件
从文件读取字符或向文件写入字符,FileReader 和 FileWriter 是两个使用很方便的类,它们与外部文件一起构成输入输出流。FileReader 和 FileWriter 的成员方法都是从其超类(reader writer)中继承的。
FileReader的构造方法:
FileReader(String filename) throws FileNotFoundException
FileReader(File file) throws FileNotFoundException
FileWriter的构造方法:
FileWriter(File file) throws IOException
FileWriter(String filename) throws IOException
FileWriter(File file,boolean append) throws IOException
FileWriter(String filename,boolean append) throws IOException
BufferedReader 和 BuffereddWriter 是缓冲数据流,它们通过减少读写 I/O 设备的次数加快输入输出的速度。输入时,预先把字符成块的读入内存缓区,每次读字符是从缓冲区中取出的。输出时,把字符写入内存缓冲区,然后再整块写入文件。
BufferedReader的构造方法:
BufferedReader(Reader in)
BufferedReader(Reader in,int size)
BuffereddWriter的构造方法:
BufferedWriter(Writer out,int size)
BufferedWriter(Writer out)
我们都知道,超类变量可以引用子类对象。in 通常引用一个FileReader对象,out通常引用一个FileWriter对象,size指缓冲区的大小。
当使用FileWriter类 和 BufferedWriter 类时用 write()方法写文件,使用FileReader 类 和 BufferedReader 类时用readLine()方法读取字符串。
因为就文件或流进行操作,就必须声明:import java.io.*;那么又为什么提到文件操作呢?--java程序中对文件的操作,主要就是读取和写入,这两个操作都要使用到输入输出流,在对文件进行写入时使用的是输入流,而读取文件使用的是输出流。
一: File类
File类常用的构造方法有:
1.File(String pathname) //pathname 可以是目录或文件名
2.File f1 = new File("Demo.txt"); //在当前目录下创建一个与"Demo.txt"文件名相关联的文件对象
3.File f2 = new File("C:\\Users\\Administrator\\Desktop\\io"); //指明详细的路径以及文件名,注意双斜线
File类常用的方法有:
1.boolean exists() //判断文件是否存在,存在返回true,否则返回false
2.boolean isFile() //判断是否为文件,是文件返回true,否则返回false
3.boolean isDirectory() //判断是否为目录,是目录返回true,否则返回false
4.String getName() //获得文件的名声
5.String getAbsolutePath() //获得文件的决定路径
6.long length() //获取文件的长度(字节数)
7boolean createNewFile()//创建新文件,创建成功返回true,否则返回false,有可能抛出IOException异常,必须捕捉
8.boolean delete() //删除文件,删除成功返回true,否则返回false
9.File[] listFile() //返回文件夹内的子文件与子文件夹的数组
public class FileTest { public static void main(String[] args) { File file = new File("wenjian/first.txt"); //exists 测试此抽象路径名表示的文件或目录是否存在 System.out.println("file是否存在: "+file.exists()); System.out.println("file是否是文件: "+file.isFile()); System.out.println("file的大小: "+file.length()); System.out.println(file.getName()); System.out.println(file.getAbsolutePath()); try{ //creatNewFile 当且仅当不存在具有此抽象路径名指定名称的文件时,不可分地创建一个新的空文件 file.createNewFile(); }catch(Exception e){ e.printStackTrace(); } query("C:\\Users\\Administrator\\Desktop\\画图板"); } //统计当前目录下的所有的文件的具体路径 public static void query(String path){ //构造一个file对象 File file = new File(path); //获取file下的所有的File对象 //listFiles() 表示返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件 File[] files = file.listFiles(); //遍历数组 for(int i=0;i<files.length;i++){ //得到每个File对象 File f = files[i]; //判断是文件还是文件夹 //isFile() 测试此抽象路径名表示的文件是否是一个标准文件 //isDirectory 测试此抽象路径名表示的文件是否是一个目录 //getAbsolutePath() 返回此抽象路径名的绝对路径名字符串 if(f.isFile()){ System.out.println("文件名: "+f.getAbsolutePath()); }else if(f.isDirectory()){ //递归 query(f.getAbsolutePath()); } } } }
二:流
流可以分为字节流和字符流。
字节流:字节流是指8位的通用字节流,以字节为基本单位,在java.io包中,对于字节流进行操作的类大部分继承于InputStream(输入字节流)类和OutputStream(输出字节流)类,因为InputStream和OutputStream是抽象类,所以不能直接生成对象。可以通过它们的子类来生存程序中所需要的对象。
字符流:字符流是指16位的Unicode字符流,以字符(两个字节)为基本单位,非常适合处理字符串和文本,对字符流进行操作的类大部分继承于Reader(读取流)类和Writer(写入流)类
1.使用字节流读取文件
FileInputStream 和 FileOutputStream 类用于从文件读取字节和向文件写入字节,它们的所以方法都是从InputStream 和 OutputStream 继承的,这两个类没有定义新的方法。在创建FileInputStream类时,首先要检查一下指定的文件是否存在。如果不存在那么从文件读取就会失败,这时会产生一个FileNotFoundException异常。
FileInputStream的构造方法有:
FileInputStream(File file) throws FileNotFoundException
FileInputStream(String name) throws FileNotFoundException
FileInputStream的常用方法:
int read() throws IOException //如果读到末尾则返回-1
int read(byte[] b) throws IOException //将读到的数据存放到byte型数组中,一样读到末尾时返回-1
void close() throws IOException
FileOutputStream的构造方法:
FileOutputStream(File file) throws FileNotFoundException
FileOutputStream(String name) throws FileNotFoundException
FileOutputStream(File file,boolean append) throws FileNotFoundException
FileOutputStream(String name,boolean append) throws FileNoFoundException //如果append设为true,将保存现有文件中的内容,并把新的数据追加到现有文件。
public class FileOperationTest { public static void main(String[] args) { readFile("wenjian/first.txt"); } //读文件 public static void readFile(String fileName){ try{ //构造一个文件输入流对象 FileInputStream fis = new FileInputStream(fileName); //开始读文件 int i = fis.read(); while(i!=-1){ System.out.print((char)i); //继续读 i = fis.read(); } fis.close(); }catch(Exception e){ e.printStackTrace(); } } }
2.使用字符流读写文件
从文件读取字符或向文件写入字符,FileReader 和 FileWriter 是两个使用很方便的类,它们与外部文件一起构成输入输出流。FileReader 和 FileWriter 的成员方法都是从其超类(reader writer)中继承的。
FileReader的构造方法:
FileReader(String filename) throws FileNotFoundException
FileReader(File file) throws FileNotFoundException
FileWriter的构造方法:
FileWriter(File file) throws IOException
FileWriter(String filename) throws IOException
FileWriter(File file,boolean append) throws IOException
FileWriter(String filename,boolean append) throws IOException
BufferedReader 和 BuffereddWriter 是缓冲数据流,它们通过减少读写 I/O 设备的次数加快输入输出的速度。输入时,预先把字符成块的读入内存缓区,每次读字符是从缓冲区中取出的。输出时,把字符写入内存缓冲区,然后再整块写入文件。
BufferedReader的构造方法:
BufferedReader(Reader in)
BufferedReader(Reader in,int size)
BuffereddWriter的构造方法:
BufferedWriter(Writer out,int size)
BufferedWriter(Writer out)
我们都知道,超类变量可以引用子类对象。in 通常引用一个FileReader对象,out通常引用一个FileWriter对象,size指缓冲区的大小。
当使用FileWriter类 和 BufferedWriter 类时用 write()方法写文件,使用FileReader 类 和 BufferedReader 类时用readLine()方法读取字符串。
相关文章推荐
- 黑马程序员------学习笔记(5)IO流中字节流操作
- IO流
- 黑马程序员-JAVASE入门( IO流 )
- IO流(一)
- IO流之打印流PrintStream和PrintWriter
- 黑马程序眼-----------IO流(下)
- JAVA中常用IO流类: PrintStream和PrintWriter
- 黑马程序员--java基础--IO流(二)
- IO流的文件copy和目录copy
- 黑马程序员__异常处理_File类_IO流之字节读写
- IO流
- 黑马程序员---IO流(一)
- 【JAVA的 IO流之FileInputStream和FileOutputStream】
- Java IO流总结
- IO流(四):其他流
- 黑马程序员——IO流(一)
- 黑马程序员——Java基础------IO流之字符流、字节流和缓冲区。
- 黑马程序员java学习笔记——IO流
- 黑马程序员——java基础——IO流
- 黑马程序员------File及IO流