javaio总结
1.JavaIO流学习总结是什
一、IO流的三种分类方式 1。
按流的方向分为:输入流和输出流 2。按流的数据单位不同分为:字节流和字符流 3。
按流的功能不同分为:节点流和处理流 二、IO流的四大抽象类: 字符流:Reader Writer 字节流:InputStream(读数据) OutputStream(写数据) 三、InputStream的基本方法 int read() throws IOException 读取一个字节以整数形式返回,如果返回-1已到输入流的末尾 void close() throws IOException 关闭流释放内存资源 long skip(long n) throws IOException 跳过n个字节不读 四、OutputStream的基本方法 void write(int b) throws IOException 向输出流写入一个字节数据 void flush() throws IOException 将输出流中缓冲的数据全部写出到目的地 五、Writer的基本方法 void write(int c) throws IOException 向输出流写入一个字符数据 void write(String str) throws IOException将一个字符串中的字符写入到输出流 void write(String str,int offset,int length) 将一个字符串从offset开始的length个字符写入到输出流 void flush() throws IOException 将输出流中缓冲的数据全部写出到目的地 六、Reader的基本方法 int read() throws IOException 读取一个字符以整数形式返回,如果返回-1已到输入流的末尾 七、节点流类型 八、访问文件之FileInputStream和FileOutputStream继承基类用于向文件中输入输出字节 九、访问文件之FileReader和FileWriter继承基类用于向文件中输入输出字符 ----输出流在构造函数第二个参数可以设置true意义为跟在已有文件后进行输入 ----此类流会抛出FileNotFoundException需要对其进行显示捕捉 十、缓冲流:缓冲流要套接在相应的节点流之上,提高了读写的效率。 此处理流的构造方法都得传相对应的基类类型 BufferedReader:提供了readLine方法用于高校读取一行字符串 BufferedWriter:提供了newline用于写入一个行分隔符也就是换行 BufferedInputStream 没多大用处 BufferedOutputStream 没多大用处 十 一、转换流:主要作用将字节流转换成字符流。
用处较大! 转换流在构造时可以指定其编码集合 InputStreamReader需要和InputStream套接 OutputStreamWriter需要和OutputStream套接 例:OutputStreamWriter osw = new OutputStreamWriter (new FileOutputStream(文件路径); 方法例:osw。 getEncoding(); 获得流的编码方式 十 二、数据流与字节数组流: 数据流主要为实现可以存取Java原始数据类型如long,boolean 数据流是字节流 DataInputStream需要和InputStream套接 DataOutputStream需要和OutputStream套接 DataInputStream方法:readBoolean() readInt() read……()…… readUTF():网络传输常用方法 读一个Unicode字符串 DataOutputStream方法与DataInputStream基本对应为写的方法 //此构造函数等于已可以往一个字节数组里输入内容 ByteArrayOutputStream baos = new ByteArrayOutputStream (); //此方法为获取一个字节数组方法返回字节数组 baos。
toByteArray(); //此方法获取字节数组占了多少字节 new ByteArrayInputStream(一个字节数组)。available() 1ByteArrayOutputStream baos = 2 new ByteArrayOutputStream(); 3 DataOutputStream dos = 4 new DataOutputStream(baos); 5 try { 6 dos。
writeDouble(Math。random()); 7 dos。
writeBoolean(true); 8 ByteArrayInputStream bais = 9 new ByteArrayInputStream(baos。toByteArray()); 10 System。
out。println(bais。
available()); 11 DataInputStream dis = new DataInputStream(bais); 12 System。out。
println(dis。readDouble()); 13 System。
out。println(dis。
readBoolean()); 14 dos。close(); dis。
close(); 15 } catch (IOException e) { 16 e。printStackTrace(); 17 } 十 二、Print流 Print流只有输出流无输入流,PrintWriter和PrintStream分别针对字符字节 两个类提供了重载的Print和Println方法用于多种数据类型的输出 PrintWriter和PrintStream的输出操作不会抛出异常 PrintWriter和PrintStream有自动flush功能 ----System。
setOut(接收OutputStream类):用于设置系统默认输出流 十 三、Object流 等同于c#序列化,用直接将Object写入或读出 transient关键字为不序列化此成员变量 需要序列化的类必须实现Serializable接口 主要方法:writeObject(Object); readObject(); 读出为Object类型需要强转数据类型 1 import java。 io。
*; 2 3 public class TestObjectIO { 4 public static void main(String args[]) throws Exception { 5 T t = new T(); 6 t。 k = 8; 7 FileOutputStream fos = new FileOutputStream("d:/share/java/io/testobjectio。
dat"); 8 ObjectOutputStream oos = new ObjectOutputStream(fos); 9 oos。 writeObject(t); 10 oos。
flush(); 11 oos。close(); 12 13 FileInputStream fis = new FileInputStream("d:/share/java/io/testobjectio。
dat"); 14 ObjectInputStream ois = new ObjectInputStream(fis); 15 T tReaded = (T)ois。readObject(); 16 System。
out。println(tReaded。
i + " " + tReaded。j + " " + tReaded。
d + " " + tReaded。k); 17 18 } 19 } 20 21 class T 22 implements Serializable 23 { 24 int i = 10; 25 int j = 9; 26 double 。
2.Java学习心得
学习了一学期的Java课程,觉得是该总结自己的心得体会了。
开始学习任何一门课(包括java),兴趣最重要。一直觉得自己在学计算机编程语言,学习了很多,但每门语言都停留在知识边缘地带,都没深入到它们的精华部分,对它们的精华部分知之甚少,于是趁学校开设这门课,并且有自己的老师讲解,还有了上机的机会,比自己自学省事多了,于是鼓足信心,开始了漫长的java征途。
还记得我编写的第一个经典程序“hello Word”。从那时起我已开始走进Java的世界。
当时自己不是很理解为什么main方法一定要这样来定义public static void main(String[] args),能不能不这样写?问了好多同学,他们告诉我的答案是一样的“java本身要求就是这样子的”,但我自己不甘心,就进行了下面的好多操作:把main改个名字运行一下,看看报什么错误,然后根据出错信息进行分析;把main的public取掉,在试试看,报什么错误;static去掉还能不能运行;不知道main方法是否一定要传一个String[]数组的,把String[]改掉,改成int[],或者String试试看;不知道是否必须写args参数名称的,也可以把args改成别的名字,看看运行结果如何。 结果把Hello World程序反复改了七八次,不断运行,分析运行结果,最后就彻底明白为什么了main方法是这样定义的了。
接着在以后的学习中我也采用这样的方法解决问题,却发现自己的速度比别人慢了好多,我就把自己的课余时间也分一部分给了java。 因为基础是最重要的,只有基础牢固才有可能对后面的学习有更加深刻的认识! 学习一门新的语言,参考书是离不开的。
听老师说订的教材偏难,不适合我们初学者,于是我在图书馆借了参考书(一本篇幅较短的入门书来学习那些最简单、最基本的东西,包括学习Java语法等)。同时,对一个最简单的程序也应该多去调试,多想想如果改动一下会出现什么结果?为什么必须那样写?多去想想这些问题然后去操作,会让你有更多的收获。
这样反复地思考是很有用的。 在学习Java的语法时,Java的语法是类似c语言的,所以学习的比较轻松。
唯一需要注意的是有几个不容易搞清楚的关键字的用法,public,protected,private,static,什么时候用,为什么要用,怎么用,和同学一起讨论了好久才得以解决。 在学习Java的面向对象的编程语言的特性。
比如继承,构造器,抽象类,接口,方法的多态,重载,覆盖,Java的异常处理机制。对于一个没有面向对象语言背景的人来说,我觉得这个过程需要花很长很长时间,因为学习Java之前没有C++的经验,只有C语言的经验,花了很长时间,才彻底把这些概念都搞清楚,把书上面的例子反复的揣摩,修改,尝试,把那几章内容反复的看过来,看过去,看了很多遍,才彻底领悟了。
开始熟悉Java的类库。基础类库里面的类非常非常多。
据说有3000多个。但是我真正使用的只有几个,比如说 java.io.*; java.util.*; java.sql.*;等。
在学习Java的过程中我得出这样的结论: 1.学习中,要养成良好的习惯(写括号时要成对,字母大小写要区分,单词拼写要准确)。 2.在学习的过程中,最好不是仅仅停留在java表层,不是抄书上的例子运行出结果就可以。
要注意,即便对一个简单的例子也要有耐心去琢磨、调试、改动。 3.在学习的过程中一定要动手做、试着写代码,而不是抱一本书看看就行。
很多东西和体会必须自己动手才能真正属于自己。 4.在 Java 的学习过程中,可能会遇到形形色色的问题不容易解决,应多去专业论坛了解相关的知识,书本上的知识有限。
要会从网上搜索有用的信息 加以整理,促进学习的深入和知识水平的提高。 看了好多网上课程,说学到一定程度要尝试着自己做东西,但觉得自己仅仅经过一学期的学习,还远远不够,希望自己在以后学习中继续努力,能够真真正正拥有一门编程语言,对自己今后的发展起到作用。
在学习java语言的同时,也让我学会了如何来发现问题,如何解决问题,怎样有效的学习等等,相信会对我一生都有帮助。
3.Java学习心得
学习了一学期的Java课程,觉得是该总结自己的心得体会了。开始学习任何一门课(包括java),兴趣最重要。一直觉得自己在学计算机编程语言,学习了很多,但每门语言都停留在知识边缘地带,都没深入到它们的精华部分,对它们的精华部分知之甚少,于是趁学校开设这门课,并且有自己的老师讲解,还有了上机的机会,比自己自学省事多了,于是鼓足信心,开始了漫长的java征途。
还记得我编写的第一个经典程序“hello Word”。从那时起我已开始走进Java的世界。当时自己不是很理解为什么main方法一定要这样来定义public static void main(String[] args),能不能不这样写?问了好多同学,他们告诉我的答案是一样的“java本身要求就是这样子的”,但我自己不甘心,就进行了下面的好多操作:把main改个名字运行一下,看看报什么错误,然后根据出错信息进行分析;把main的public取掉,在试试看,报什么错误;static去掉还能不能运行;不知道main方法是否一定要传一个String[]数组的,把String[]改掉,改成int[],或者String试试看;不知道是否必须写args参数名称的,也可以把args改成别的名字,看看运行结果如何。 结果把Hello World程序反复改了七八次,不断运行,分析运行结果,最后就彻底明白为什么了main方法是这样定义的了。接着在以后的学习中我也采用这样的方法解决问题,却发现自己的速度比别人慢了好多,我就把自己的课余时间也分一部分给了java。
因为基础是最重要的,只有基础牢固才有可能对后面的学习有更加深刻的认识!
学习一门新的语言,参考书是离不开的。听老师说订的教材偏难,不适合我们初学者,于是我在图书馆借了参考书(一本篇幅较短的入门书来学习那些最简单、最基本的东西,包括学习Java语法等)。同时,对一个最简单的程序也应该多去调试,多想想如果改动一下会出现什么结果?为什么必须那样写?多去想想这些问题然后去操作,会让你有更多的收获。这样反复地思考是很有用的。
在学习Java的语法时,Java的语法是类似c语言的,所以学习的比较轻松。唯一需要注意的是有几个不容易搞清楚的关键字的用法,public,protected,private,static,什么时候用,为什么要用,怎么用,和同学一起讨论了好久才得以解决。
在学习Java的面向对象的编程语言的特性。比如继承,构造器,抽象类,接口,方法的多态,重载,覆盖,Java的异常处理机制。对于一个没有面向对象语言背景的人来说,我觉得这个过程需要花很长很长时间,因为学习Java之前没有C++的经验,只有C语言的经验,花了很长时间,才彻底把这些概念都搞清楚,把书上面的例子反复的揣摩,修改,尝试,把那几章内容反复的看过来,看过去,看了很多遍,才彻底领悟了。
开始熟悉Java的类库。基础类库里面的类非常非常多。据说有3000多个。但是我真正使用的只有几个,比如说 java.io.*; java.util.*; java.sql.*;等。
在学习Java的过程中我得出这样的结论:
1.学习中,要养成良好的习惯(写括号时要成对,字母大小写要区分,单词拼写要准确)。
2.在学习的过程中,最好不是仅仅停留在java表层,不是抄书上的例子运行出结果就可以。要注意,即便对一个简单的例子也要有耐心去琢磨、调试、改动。
3.在学习的过程中一定要动手做、试着写代码,而不是抱一本书看看就行。很多东西和体会必须自己动手才能真正属于自己。
4.在 Java 的学习过程中,可能会遇到形形色色的问题不容易解决,应多去专业论坛了解相关的知识,书本上的知识有限。要会从网上搜索有用的信息 加以整理,促进学习的深入和知识水平的提高。
看了好多网上课程,说学到一定程度要尝试着自己做东西,但觉得自己仅仅经过一学期的学习,还远远不够,希望自己在以后学习中继续努力,能够真真正正拥有一门编程语言,对自己今后的发展起到作用。在学习java语言的同时,也让我学会了如何来发现问题,如何解决问题,怎样有效的学习等等,相信会对我一生都有帮助。
4.java i/o各种封装类 总结
常用的文件读写的类java.io.BufferedReader;java.io.BufferedWriter;java.io.File;java.io.FileReader; java.io.FileWriter;一个简单的实例:File file = new File("H:\test.txt"); // 实例一个File对象,参数为文件路径 // 判断file对象是否是目录 if (!file.isDirectory()) { FileReader fr = new FileReader(file); // 通过file对象实例一个文件读取器 BufferedReader br = new BufferedReader(fr); // 该对象可以对文件进行读取操作 FileWriter fw = new FileWriter("H:\newtest.txt"); // 实例化一个文件写入对象,参数为新文件名 BufferedWriter bw = new BufferedWriter(fw); String strLine1 = br.readLine(); // 从文件中读取一行1 String strLine2 = br.readLine(); // 从文件中读取一行2 bw.write(strLine1); // 将strLine1写入到新文件中 bw.newline(); // 换行 bw.write(strLine2); // 再写入一行 // 最后别忘了关闭这些读写对象,记得从下往上的顺序关闭,即从最下层对象开始关 bw.close(); fw.close(); br.close(); fr.close(); // 调用这个可删除文件 file.delete(); }。
5.JavaIO概念与原理是什么
一、概念 Java中对文件的操作是以流的方式进行的。
流是Java内存中的一组有序数据序列。Java将数据从源(文件、内存、键盘、网络)读入到内存中,形成了流,然后将这些流还可以写到另外的目的地(文件、内存、控制台、网络),之所以称为流,是因为这个数据序列在不同时刻所操作的是源的不同部分。
二、分类 流的分类,Java的流分类比较丰富,刚接触的人看了后会感觉很晕。流分类的方式很多: 1、按照输入的方向分,输入流和输出流,输入输出的参照对象是Java程序。
2、按照处理数据的单位不同分,字节流和字符流,字节流读取的最小单位是一个字节(1byte=8bit),而字符流一次可以读取一个字符(1char = 2byte = 16bit)。 3、按照功能的不同分,分节点流和处理流,节点流是直接从一个源读写数据的流(这个流没有经过包装和修饰),处理流是在对节点流封装的基础上的一种流,FileInputStream是一个接点流,可以直接从文件读取数据,但是BufferedInputStream可以包装 FileInputStream,使得其有缓冲功能。
其实除了以上三种分类外,还有一些常常听到的一些分类比如:对象流、缓冲流、压缩流、文件流等等。其实都是节点流和处理流的子分类。
当然你也可以创建新的流类型,只要你需要。 三、流分类的关系 不管流的分类是多么的丰富和复杂,其根源来自于四个基本的类。
这个四个类的关系如下: 字节流 字符流 输入流 InputStream Reader 输出流 OutputStream Writer 四、字节流和字符流的相互转换 1、从字节流到字符流:InputStreamReader、OutputStreamWriter类可以实现。 2、从字符流到字节流:可以从字符流中获取char[]数组,转换为String,然后调用String的API函数getBytes() 获取到byte[],然后就可以通过ByteArrayInputStream、ByteArrayOutputStream来实现到字节流的转换。
以上知识是学习Java流的根基,对流的操作非常的容易,Java API中提供了丰富的流处理类,API也大差不差,看看文档即可上手。
6.JAVAIO设计模式是什么
一。
引子(概括地介绍Java的IO) 无论是哪种编程语言,输入跟输出都是重要的一部分,Java也不例外,而且Java将输入/输出的功能和使用范畴做了很大的扩充。它采用了流的机制来实现输入/输出,所谓流,就是数据的有序排列,而流可以是从某个源(称为流源或Source of Stream)出来,到某个目的地(称为流汇或Sink of Stream)去的。
由流的方向,可以分成输入流和输出流,一个程序从输入流读取数据向输出流写数据。 如,一个程序可以用FileInputStream类从一个磁盘文件读取数据,如下图所示: 像FileInputStream这样的处理器叫做流处理器,它就像流的管道一样,从一个流源吸入某种类型的数据,并输出某种类型的数据。
上面这种示意图叫做流的管道图。 同样道理,也可以用FileOutputStream类向一个磁盘文件写数据,如下图所示: 在实际应用这种机制并不没有太大的用处,程序需要写出地通常是非常结构化的信息,因此这些byte类型的数据实际上是一些数值,文字,源代码等。
Java的I/O库提供了一个称做链接(Chaining)的机制,可以将一个流处理器跟另一个流处理器首尾相接,以其中之一的输出为输入,形成一个流管道的链接。 例如,DataInputStream流处理器可以把FileInputStream流对象的输出当作输入,将Byte类型的数据转换成Java的原始类型和String类型的数据。
如下图所示: 类似地,向一个文件写入Byte类型的数据不是一个简单的过程。一个程序需要向一个文件里写入的数据往往都是结构化的,而Byte类型则是原始类型。
因此在写的时候必须经过转换。DataOutputStream流处理器提供了接收了原始数据类型和String数据类型,而这个流处理器的输出数据则是Byte类型。
也就是说DataOutputStream可以将源数据转换成Byte类型的数据,再输出来。 这样一来,就可以将DataOutputStream与FileOutputStream链接起来,这样程序就可以将原始数据类型和String类型的源数据写入这个链接好的双重管道里面,达到将结构化数据写到磁盘文件里面的目的,如下图所示: 这又是链接的所发挥的大作用。
7.java i/o各种封装类 总结
常用的文件读写的类java.io.BufferedReader;
java.io.BufferedWriter;
java.io.File;
java.io.FileReader;
java.io.FileWriter;
一个简单的实例:File file = new File("H:\test.txt"); // 实例一个File对象,参数为文件路径 // 判断file对象是否是目录 if (!file.isDirectory()) { FileReader fr = new FileReader(file); // 通过file对象实例一个文件读取器
BufferedReader br = new BufferedReader(fr); // 该对象可以对文件进行读取操作
FileWriter fw = new FileWriter("H:\newtest.txt"); // 实例化一个文件写入对象,参数为新文件名
BufferedWriter bw = new BufferedWriter(fw);
String strLine1 = br.readLine(); // 从文件中读取一行1
String strLine2 = br.readLine(); // 从文件中读取一行2
bw.write(strLine1); // 将strLine1写入到新文件中
bw.newline(); // 换行
bw.write(strLine2); // 再写入一行 // 最后别忘了关闭这些读写对象,记得从下往上的顺序关闭,即从最下层对象开始关
bw.close();
fw.close();
br.close();
fr.close(); // 调用这个可删除文件
file.delete(); }