没有合适的资源?快使用搜索试试~ 我知道了~
【Java】输入输出:探究javaio
需积分: 3 1 下载量 60 浏览量
2013-01-31
19:51:38
上传
评论
收藏 143KB PDF 举报
温馨提示
【Java】输入输出:探究javaio
资源推荐
资源详情
资源评论























【Java】输入输出:探究javaioの
字 节 流 类 为 处 理 字 节 式 输 入字 节 流 类 为 处 理 字 节 式 输 入 /输 出 提 供 了 丰 富 的 环 境 。输 出 提 供 了 丰 富 的 环 境 。
一 个 字 节 流 可 以 和 其 他 任 何 类 型 的 对 象 并 用 , 包 括 二 进 制 数 据 。一 个 字 节 流 可 以 和 其 他 任 何 类 型 的 对 象 并 用 , 包 括 二 进 制 数 据 。
这 样 的 多 功 能 性 使 得 字 节 流 对 很 多 类 型 的 程 序 都 很 重 要 。这 样 的 多 功 能 性 使 得 字 节 流 对 很 多 类 型 的 程 序 都 很 重 要 。
字 节 流 类 以字 节 流 类 以 InputStream 和和 OutputStream为 顶 层 。为 顶 层 。
一、InputStream(输入流)
InputStream 是一个定义了Java 流式字节输入模式的抽象类
该 类 的 所 有 方 法 在 出 错 条 件 下 引 发 一 个该 类 的 所 有 方 法 在 出 错 条 件 下 引 发 一 个 IOException 异 常异 常
1. //返回当前可读的输入字节数
2. int available( )
3. //关闭输入源。关闭之后的读取会产生IOException异常
4. void close( )
5. //如果下一个字节可读则返回一个整型,遇到文件尾时返回-1
6. int read()
7. //试图读取buffer.length个字节到buffer中,并返回实际成功读取的字节数。遇到文件尾时返回-1
8. int read(byte buffer[ ])
9. //重新设置输入指针到先前设置的标志处
10. void reset( )
11. //在输入流的当前点放置一个标记。该流在读取numBytes个字节前都保持有效
12. void mark(int numBytes)
13. //如果调用的流支持mark( )/reset( )就返回true
14. boolean markSupported( )
15. //忽略numBytes个输入字节,返回实际忽略的字节数
16. ong skip(long numBytes)
二、OutputStream(输出流)
OutputStream是定义了流式字节输出模式的抽象类。
该 类 的 所 有 方 法 返 回 一 个该类 的 所 有 方 法 返 回 一 个 void 值值 并 且 在 出 错 情 况 下 引 发 一 个并 且 在 出 错 情 况 下 引 发 一 个 IOException异 常 。异 常 。
1. //关闭输出流。关闭后的写操作会产生IOException异常
2. void close( )
3. //定制输出状态以使每个缓冲器都被清除,也就是刷新输出缓冲区
4. void flush( )
5. //向输出流写入单个字节。注意参数是一个整型数,它允许你不必把参数转换成字节型就可以调用write()
6. void write(int b)
7. //向一个输出流写一个完整的字节数组
8. void write(byte buffer[ ])
9. //写数组buffer以buffer[offset]为起点的numBytes个字节区域内的内容
10. void write(byte buffer[ ], int offset, int numBytes)
三、FileInputStream(文件输入流)
FileInputStream 类创建一个能从文件读取字节的InputStream 类,它们都能引发FileNotFoundException 异常
1. FileInputStream(String filepath)
2. FileInputStream(File fileObj)
filepath 是文 件 的 全 称 路 径 ,是 文 件 的 全 称 路 径 , fileObj是 描 述 该 文 件 的是 描 述 该 文 件 的 File对 象 。对 象 。
下面的例子创建了两个使用同样磁盘文件且各含一个上述构造函数的FileInputStreams类:
1. public static void main(String[] args) {
2. try {
3. FileInputStream stream=new FileInputStream("D:/test/txt");
4. FileInputStream stream2=new FileInputStream(new File("D:/test/txt"));
5. } catch (FileNotFoundException e) {
6. // TODO Auto-generated catch block
7. e.printStackTrace();
8. }
9. }
↑↑↑尽管第一个构造函数可能更常用到,第二个构造函数允许在把文件赋给输入流之前用File 方法更进一步检查文件。
幓≦▄FileInputStream 螫儛巺擶齝媃勯ï 螫偬帀諻勖ろFileInputStream郍蹽﹤憽譡筻InputStream 疄偭▄撹毕齝mark( ) 厌reset( ) 撹毕╚螫郍蹽齝‡ 乕偳ⅱ乿琨FileInputStream疄reset() 嬝諕追业琟愐IOException市崸ろ
↓↓↓下面的例题说明了怎样读取单个字节、字节数组以及字节数组的子界。它同样阐述了怎样运用available( ) 判定剩余的字节个数及怎样用skip( ) 方法跳过不必要的字节。该程序读取它自己的源文件:
1. public static void main(String[] args) {
2. int size;
3. try {

4. InputStream f = new FileInputStream("D:/test.txt");
5.
6. System.out.println("\n当前可读的输入字节数:" + (size = f.available()));
7.
8. // 读取单个字节
9. System.out.print("读取前文件中的前两个字节:");
10. for (int i = 0; i < 2; i++) {
11. System.out.print((char) f.read());
12. }
13. System.out.println();
14.
15. System.out.println("\n当前可读的输入字节数:" + (size = f.available()));
16.
17. // 读取字节数组
18. byte b[] = new byte[10];
19. if (f.read(b) != 10) {
20. System.out.println("不能读取10字节");
21. }
22. ;
23. System.out.println(new String(b, 0, 10));
24. System.out.println("\n当前可读的输入字节数:" + (size = f.available()));
25.
26. // 使用用skip()方法
27. System.out.println("执行skip(2)跳跃两个字节");
28. f.skip(2);
29.
30. System.out.println("\n当前可读的输入字节数:" + (size = f.available()));
31.
32. if (f.read(b, 0, 5) != 5) {
33. System.err.println("不能读取5字节");
34. }
35. System.out.println(new String(b, 0, 5));
36. System.out.println("\n当前可读的输入字节数:" + (size = f.available()));
37. f.close();
38. } catch (FileNotFoundException e) {
39. // TODO Auto-generated catch block
40. e.printStackTrace();
41. } catch (IOException e) {
42. // TODO Auto-generated catch block
43. e.printStackTrace();
44. }
45. }
46.
47. // 输出结果
48. // ↓↓↓
49.
50. // 当前可读的输入字节数:490
51. // 读取前文件中的前两个字节:In
52. //
53. // 当前可读的输入字节数:488
54. // the Orien
55. //
56. // 当前可读的输入字节数:478
57. // 执行skip(2)跳跃两个字节
58. //
59. // 当前可读的输入字节数:476
60. // young
61. //
62. // 当前可读的输入字节数:471
四、FileOutputStream(文件输出流)
FileOutputStream 创建了一个可以向文件写入字节的类OutputStream,它们可以引发IOException或SecurityException异常
1. FileOutputStream(String filePath)
2. FileOutputStream(File fileObj)
3. FileOutputStream(String filePath, boolean append)
filePath是文件的全称路径,fileObj 是描述该文件的File 对象。如果append 为true ,文件以设置搜索路径模式打开。
FileOutputStream的创建不依赖于文件是否存在。在创建对象时FileOutputStream在打开输出文件之前创建它。这种情况下你试图打开一个只读文件,会引发一个IOException异常。
1. public static void main(String[] args) {
2. try {
3. String source = "Now is the time for all good men\n"
4. + " to come to the aid of their country\n"
5. + " and pay their due taxes.";
6. byte buf[] = source.getBytes();
7. OutputStream f0;
8.
9. f0 = new FileOutputStream("D:/file1.txt");
10.
11. for (int i = 0; i < buf.length; i += 2) {
12. f0.write(buf[i]);
13. }
14. f0.close();
15.
剩余6页未读,继续阅读
资源评论


daainini
- 粉丝: 170
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈



安全验证
文档复制为VIP权益,开通VIP直接复制
