java基础——文件(IO)操作1
2014-07-08 11:12
465 查看
一、流类
Java的流式输入/输出建立在四个抽象类的基础上:InputStream,OutputStream,Reader和Writer。它们用来创建具体流式子类。尽管程序通过具体子类执行输入/输入,但是顶层的类定义了所有流类的基本通用功能。InputStream和OutputStream设计成字节流类。Reader和Writer为字符流设计。字节流和字符流类形成分离的层次结构。一般,处理字符和字符串时应使用字符流类,处理字节或二进制对象时应用字节流类。
在操作文件流时,按以下方式进行:
1.使用File类找到一个文件
2.通过File类的对象去实例化字节流或字符流的子类
3.进行字节或字符的读、写操作
4.关闭文件流
二、字节流
FileInputStream类:能从文件读取字节,常用的两个构造方法://参数为文件的绝对路径 FileInputStream(String filepath) //参数为文件File的对象 FileInputStream(File fileObj)
FileOutputStream类:能向文件写入字节,常用的两个构造方法:
//参数为文件的绝对路径 FileOutputStream(String filePath) //参数为文件File的对象 FileOutputStream(File fileObj) //如果append为true,文件则以设置搜索路径模式打开 FileOutputStream(String filePath,boolean append)
示例:
import java.io.*; public class StreamDemo{ public static void main(String args[]){ File f = new File("c:\\temp.txt") ; OutputStream out = null ; try{ out = new FileOutputStream(f) ; }catch (FileNotFoundException e){ e.printStackTrace(); } // 将字符串转成字节数组 byte b[] = "Hello World!!!".getBytes() ; try{ // 将 byte 数组写入到文件之中 out.write(b) ; }catch (IOException e1){ e1.printStackTrace(); } try{ out.close() ; }catch (IOException e2){ e2.printStackTrace(); } // 以下为读文件操作 InputStream in = null ; try{ in = new FileInputStream(f) ; }catch (FileNotFoundException e3){ e3.printStackTrace(); } // 开辟一个空间用于接收文件读进来的数据 byte b1[] = new byte[1024] ; int i = 0 ; try{ // 将 b1 的引用传递到 read()方法之中,同时此方法返回读入数据的个数 i = in.read(b1) ; }catch (IOException e4){ e4.printStackTrace(); } try{ in.close() ; }catch (IOException e5){ e5.printStackTrace(); } //将 byte 数组转换为字符串输出 System.out.println(new String(b1,0,i)) ; } }
执行结果:
三、字符流
FileReader类:可以读取文件内容,常用的构造方法同FileInputStreamFileWriter类:可以写文件,常用的构造方法同FileOutputStream
示例:
import java.io.*; public class CharDemo{ public static void main(String args[]){ File f = new File("c:\\temp.txt") ; Writer out = null ; try{ out = new FileWriter(f) ; }catch (IOException e){ e.printStackTrace(); } // 声明一个 String 类型对象 String str = "Hello World!!!" ; try{ // 将 str 内容写入到文件之中 out.write(str) ; }catch (IOException e1){ e1.printStackTrace(); } try{ out.close() ; }catch (IOException e2){ e2.printStackTrace(); } // 以下为读文件操作 Reader in = null ; try{ in = new FileReader(f) ; }catch (FileNotFoundException e3){ e3.printStackTrace(); } // 开辟一个空间用于接收文件读进来的数据 char c1[] = new char[1024] ; int i = 0 ; try{ // 将 c1 的引用传递到 read()方法之中,同时此方法返回读入数据的个数 i = in.read(c1) ; }catch (IOException e4){ e4.printStackTrace(); } try{ in.close() ; }catch (IOException e5){ e5.printStackTrace(); } //将字符数组转换为字符串输出 System.out.println(new String(c1,0,i)) ; } }
输出结果:
三、字节流与字符流的转换
字节流和字符流之间转换的类:
InputStreamReader类:将一个字节流中的字节解码成字符。主要的构造函数:
// 用默认字符集创建一个 InputStreamReader 对象 InputStreamReader(InputStream in) // 接受已指定字符集名的字符串,并用该字符集创建对象 InputStreamReader(InputStream in,String CharsetName)
OuputStreamWriter类:将写入的字符编码成字节后写入一个字节流。主要的构造函数:
// 用默认字符集创建一个 OutputStreamWriter 对象 OutputStreamWriter(OutputStream in) // 接受已指定字符集名的字符串,并用该字符集创建 OutputStreamWriter 对象 OutputStreamWriter(OutputStream in,String CharsetNarme)
为了达到最高的效率,避免频繁地进行字符与字节间的相互转换,最好不要直接使用这两个类来进行读写,应尽量使用 BufferedWriter类包装
OutputStreamWriter类,用 BufferedReader类包装
InputStreamReader类。
例如:
BufferedWriter out=new BufferedWriter(newOutputStreamWriter(System.out)); BufferedReader in=new BufferedReader(new InputStreamReader(System.in));
示例:
import java.io.*; public class BufferDemo{ public static void main(String args[]){ BufferedReader buf = null; //System.in是inputStream类型 //先讲字节流转换成字符流,再将字符流放入到了BufferedReader中 buf = new BufferedReader(new InputStreamReader(System.in)); String str = null; while (true){ System.out.print("请输入数字:"); try{ //等待键盘输入数据 str = buf.readLine(); } catch (IOException e){ e.printStackTrace(); } int i = -1; try{ //将输入的字符串转换成基本数据类型中的整型 i = Integer.parseInt(str); i++; //将数据+1后输出 System.out.println("输入的数字修改后为:" + i); break; }catch (Exception e){ System.out.println("输入的内容不正确,请重新输入!"); } } } }
执行结果:
相关文章推荐
- Java-基础 文件操作IO 重命名文件
- Java-基础 文件操作IO 设置文件权限为只读
- Java IO 操作基础2---操作 ZIP 压缩文件
- Java-基础 文件操作IO 将文件内容复制到另外一个文件中去
- Java自学之路-Java基础教程-32:Java写文件操作和IO输入输出流
- java IO文件操作简单基础入门例子,IO流其实没那么难
- Java基础——IO(拷贝文件+字节流-字符流缓冲区(装饰设计)-转换流-IO操作规律-异常日志-系统信息列表输出)
- Java-基础 文件操作IO 在指定目录中创建文件
- Java-基础 文件操作IO 检测文件是否存在
- Java-基础 文件操作IO-文件写入
- java基础 通过IO操作 为文件名称修改编码
- Java IO 操作基础1---普通文件的相关操作
- Java-基础 文件操作IO 向文件中追加数据
- Java-基础 文件操作IO 修改文件的最后修改时间
- Java-基础 文件操作IO-读取文件内容
- Java-基础 文件操作IO-删除文件
- java基础——文件(IO)操作2
- java IO文件操作简单基础入门例子,IO流其实没那么难
- java IO操作与字节流(一)File创建,与文件的查找
- java最基础的文件操作(FileInputStream和FileoutputStream)