JavaIO 流详解.docx
- 文档编号:9667474
- 上传时间:2023-02-05
- 格式:DOCX
- 页数:40
- 大小:65.58KB
JavaIO 流详解.docx
《JavaIO 流详解.docx》由会员分享,可在线阅读,更多相关《JavaIO 流详解.docx(40页珍藏版)》请在冰豆网上搜索。
JavaIO流详解
Java/IO流详解
总结一下JavaI/O文件读写基本类相关知识和概念,对于程序设计者来说,创建一个好的输入/输出系统是一项艰难的任务,其中挑战来源于所有的可能性,不仅存在各种源端与接收端(文件,控制台,网络链接等),而且还需要以各种不同的方式与它们通信(顺序,随机存取,缓冲,二进制,按字符,按行,按字等)
JavaI/O主要包括如下几个层次:
1.File(文件特征与管理):
用于文件或者目录的描述信息,例如生成新目录,修改文件名,删除文件,判断文件所在路径等。
2.InputStream(二进制格式操作):
抽象类,基于字节的输入操作,是所有输入流的父类。
定义了所有输入流都具有的共同特征。
3.OutputStream(二进制格式操作):
抽象类。
基于字节的输出操作。
是所有输出流的父类。
定义了所有输出流都具有的共同特征。
Java中字符是采用Unicode标准,一个字符是16位,即一个字符使用两个字节来表示。
为此,JAVA中引入了处理字符的流。
4.Reader(文件格式操作):
抽象类,基于字符的输入操作。
5.Writer(文件格式操作):
抽象类,基于字符的输出操作。
6.RandomAccessFile(随机文件操作):
它的功能丰富,可以从文件的任意位置进行存取(输入输出)操作。
1.File
它是独立于系统平台的,利用其构造函数创建出相应的File对象;再调用其中的方法实现对文件的各个属性方面的操作。
构造函数:
File(String path)
File(Stringpath,StringFileName)
File(Filedir,Stringname)
用途:
File类提供了一种与机器无关的方式来描述一个文件对象的属性,通过类File所提供的方法,可以得到文件或目录的描述信息,这主要包括名称、所在路经、可读性、可写性、文件的长度等,还可以生成新的目录、改变文件名、删除文件、列出一个目录中所有的文件等。
Java代码
1.public static void main(String[] args) throws IOException {
2. File f = new File("dir");
3.
4. f.createNewFile();// 创建一个.txt这个文件
5.
6. f.mkdir();// 创建一个名为.txt的目录
7.
8. /*
9. * 使用绝对路径
10. *
11. * File f=new File("D:
\\dir\\src\\A.java");
12. *
13. * f.createNewFile();
14. */
15.
16. /*
17. * 跨平台使用
18. *
19. * 根据不同操作系统获得对应的分隔符 File fDir=new File(File.separator);
20. *
21. * String strFile="dir"+File.separator+"src"+File.separator +"A.java";
22. *
23. * File f=new File(fDir,strFile);
24. *
25. * f.createNewFile();
26. *
27. * f.delete();//删除文件或目录
28. *
29. * //f.deleteOnExit();
30. */
31.
32. /*
33. * 在缺省的临时文件目录下创建临时文件
34. *
35. * for(int i=0;i<5;i++)
36. *
37. * {
38. *
39. * File f=File.createTempFile("winTemp",".tmp");
40. *
41. * f.deleteOnExit();//退出时删除
42. *
43. *
44. *
45. * }
46. */
47.
48. /*
49. * 列出指定目录下所有子目录及文件的名称
50. */
51. File fDir = new File(File.separator);
52. String strFile = "dir" + File.separator + "src";
53. File f = new File(fDir, strFile);
54. String[] names = f.list();
55. for (int i = 0; i < names.length; i++) {
56. System.out.println(names[i]);
57. }
58.
59. // 有过滤器的情况FilenameFilter是个接口
60. File dir = new File(File.separator);
61.
62. String filepath = "dir" + File.separator + "src";
63.
64. /**
65. * dir
66. * 上级抽象路径,如果dir为null,那么程序将自动调用单个参数的File构造方法,同时将filepath路径应用到File但构造参数
67. * 如果dir为//,则此路径为本文件所在磁盘根目录
68. */
69. File f = new File(dir, filepath);
70. if (f.exists()) {
71. } else {
72. f.mkdirs();
73. }
74.
75. String[] names = f.list(new FilenameFilter() { // 实现了FilenameFilter接口的匿名类,实现accept方法过滤文件
76.
77. @Override
78. public boolean accept(File dir, String name) {
79. System.out.println(name.indexOf(".java"));
80. return name.indexOf(".java") !
= -1;
81. }
82. });
83.
84. for (int i = 0; i < names.length; i++) {
85. System.out.println(names[i]);
86. }
87. }
[java] viewplaincopy
1.public static void main(String[] args) throws IOException {
2. File f = new File("dir");
3.
4. f.createNewFile();// 创建一个.txt这个文件
5.
6. f.mkdir();// 创建一个名为.txt的目录
7.
8. /*
9. * 使用绝对路径
10. *
11. * File f=new File("D:
\\dir\\src\\A.java");
12. *
13. * f.createNewFile();
14. */
15.
16. /*
17. * 跨平台使用
18. *
19. * 根据不同操作系统获得对应的分隔符 File fDir=new File(File.separator);
20. *
21. * String strFile="dir"+File.separator+"src"+File.separator +"A.java";
22. *
23. * File f=new File(fDir,strFile);
24. *
25. * f.createNewFile();
26. *
27. * f.delete();//删除文件或目录
28. *
29. * //f.deleteOnExit();
30. */
31.
32. /*
33. * 在缺省的临时文件目录下创建临时文件
34. *
35. * for(int i=0;i<5;i++)
36. *
37. * {
38. *
39. * File f=File.createTempFile("winTemp",".tmp");
40. *
41. * f.deleteOnExit();//退出时删除
42. *
43. *
44. *
45. * }
46. */
47.
48. /*
49. * 列出指定目录下所有子目录及文件的名称
50. */
51. File fDir = new File(File.separator);
52. String strFile = "dir" + File.separator + "src";
53. File f = new File(fDir, strFile);
54. String[] names = f.list();
55. for (int i = 0; i < names.length; i++) {
56. System.out.println(names[i]);
57. }
58.
59. // 有过滤器的情况FilenameFilter是个接口
60. File dir = new File(File.separator);
61.
62. String filepath = "dir" + File.separator + "src";
63.
64. /**
65. * dir
66. * 上级抽象路径,如果dir为null,那么程序将自动调用单个参数的File构造方法,同时将filepath路径应用到File但构造参数
67. * 如果dir为//,则此路径为本文件所在磁盘根目录
68. */
69. File f = new File(dir, filepath);
70. if (f.exists()) {
71. } else {
72. f.mkdirs();
73. }
74.
75. String[] names = f.list(new FilenameFilter() { // 实现了FilenameFilter接口的匿名类,实现accept方法过滤文件
76.
77. @Override
78. public boolean accept(File dir, String name) {
79. System.out.println(name.indexOf(".java"));
80. return name.indexOf(".java") !
= -1;
81. }
82. });
83.
84. for (int i = 0; i < names.length; i++) {
85. System.out.println(names[i]);
86. }
87. }
[java] viewplaincopy
1.public static void main(String[] args) throws IOException {
2. File f = new File("dir");
3.
4. f.createNewFile();// 创建一个.txt这个文件
5.
6. f.mkdir();// 创建一个名为.txt的目录
7.
8. /*
9. * 使用绝对路径
10. *
11. * File f=new File("D:
\\dir\\src\\A.java");
12. *
13. * f.createNewFile();
14. */
15.
16. /*
17. * 跨平台使用
18. *
19. * 根据不同操作系统获得对应的分隔符 File fDir=new File(File.separator);
20. *
21. * String strFile="dir"+File.separator+"src"+File.separator +"A.java";
22. *
23. * File f=new File(fDir,strFile);
24. *
25. * f.createNewFile();
26. *
27. * f.delete();//删除文件或目录
28. *
29. * //f.deleteOnExit();
30. */
31.
32. /*
33. * 在缺省的临时文件目录下创建临时文件
34. *
35. * for(int i=0;i<5;i++)
36. *
37. * {
38. *
39. * File f=File.createTempFile("winTemp",".tmp");
40. *
41. * f.deleteOnExit();//退出时删除
42. *
43. *
44. *
45. * }
46. */
47.
48. /*
49. * 列出指定目录下所有子目录及文件的名称
50. */
51. File fDir = new File(File.separator);
52. String strFile = "dir" + File.separator + "src";
53. File f = new File(fDir, strFile);
54. String[] names = f.list();
55. for (int i = 0; i < names.length; i++) {
56. System.out.println(names[i]);
57. }
58.
59. // 有过滤器的情况FilenameFilter是个接口
60. File dir = new File(File.separator);
61.
62. String filepath = "dir" + File.separator + "src";
63.
64. /**
65. * dir
66. * 上级抽象路径,如果dir为null,那么程序将自动调用单个参数的File构造方法,同时将filepath路径应用到File但构造参数
67. * 如果dir为//,则此路径为本文件所在磁盘根目录
68. */
69. File f = new File(dir, filepath);
70. if (f.exists()) {
71. } else {
72. f.mkdirs();
73. }
74.
75. String[] names = f.list(new FilenameFilter() { // 实现了FilenameFilter接口的匿名类,实现accept方法过滤文件
76.
77. @Override
78. public boolean accept(File dir, String name) {
79. System.out.println(name.indexOf(".java"));
80. return name.indexOf(".java") !
= -1;
81. }
82. });
83.
84. for (int i = 0; i < names.length; i++) {
85. System.out.println(names[i]);
86. }
87. }
2.InputStream/OutputStream(抽象基类)
(1)它们主要提供文件内容操作的基本功能函数read()、write()、close()等;一般都是创建出其派生类对象(完成指定的特殊功能)来实现文件读写。
(2)文件操作的一般方法:
根据所要操作的类型生成对应输入输出文件类的对象;
调用此类的成员函数实现文件数据的读写;
关闭此文件流对象。
(3)文件操作的应用要点:
异常的捕获:
由于包java.io中几乎所有的类都声明有I/O异常,因此程序应该对这些异常加以处理。
流结束的判断:
方法read()的返回值为-1时;readLine()的返回值为null时。
上边两个抽象基类实现类有FileInputStream/FileOutputStream(本地文件读写类):
它们用于本地文件的二进制格式顺序读写。
java.io.FileInputStream是InputStream的子类。
从开头File名称上就可以知道,FileInputStream与从指定的文件中读取数据至目的地有关。
而java.io.FileOutputStream是OutputStream的子类,顾名思义,FileOutputStream主要与从来源地写入数据至指定的文件中有关。
当建立一个FileInputStream或FileOutputStream的实例时,必须指定文件位置及文件名称,实例被建立时文件的流就会开启;而不使用流时,必须关闭文件流,以释放与流相依的系统资源,完成文件读/写的动作。
FileInputStream可以使用read()方法一次读入一个字节,并以int类型
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JavaIO 流详解 详解