java从入门到弃坑第十四天
来源:互联网 发布:淘宝双收藏是什么意思 编辑:程序博客网 时间:2024/06/05 15:00
1.LineNumberReader:跟踪行号的字符缓冲输入流。
构造方法:LineNumberReader(Reader in):用默认输入缓冲区的大小创建行编号Reader。
LineNumberReader(Reader in,int sz):创建行编号reader,给定缓冲区大小。
成员方法:public int getLineNumber():获取行号
public void setLineNumber(int lineNumber):设置起始行号
String readLine():读取一行
exp:读取文件,每次读取一行打印并且加上行号,要在根目录下先创建文件在读取
import java.io.FileReader;import java.io.IOException;import java.io.LineNumberReader;public class ReaderDemo {public static void main(String[] args) throws IOException {LineNumberReader lnr=new LineNumberReader(new FileReader("1.txt"));String s;//用字符串s接取读取的行字符。while((s=lnr.readLine())!=null){System.out.println(lnr.getLineNumber()+" "+s);}}}
2.操作基本数据类型的流:DataInputStream:向文件中写入数据。
DataOutputStream:从文件中读取数据。
注:用该io流操作时读取数据顺序必须和写入时的一致,否则数据有问题。顺序不一致,
报错:Exception in thread "main" java.io.EOFException。
3.内存操作流:解决临时数据储存的问题。
操作字节数组:用InputStream或OutputStream。
操作字符数组:用StringReader或StringWriter。将数据写到流中保存在内存,并且读取。
4.打印流:字节打印流:PrintStream,字符打印流:PrintWriter。
特点:A:只能操作目的地,不能操作数据源。
B:可以操作任意类型的数据。
C:创建对象时可以启用自动刷新功能,但仅限于println、printf 或 format方法。
D:可以操作文件的流:其构造方法中同时有File和String类型的参数。
exp:利用字符打印流复制java文件(BufferedReader+PrintWriter),启动自动刷新。
import java.io.BufferedReader;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;import java.io.PrintWriter;public class CopyDemo1 {public static void main(String[] args) throws IOException {BufferedReader bw=new BufferedReader(new FileReader("1.java"));PrintWriter pw=new PrintWriter(new FileWriter("2.java"), true);String s;while((s=bw.readLine())!=null){pw.println(s);}bw.close();pw.close();}}
5.标准输入输出流:public static final InputStream in,public static final PrintStream out,这两个是System下的两个
成员变量,System.out是标准输出流,而println是操作字符流,所以在这之中用转换流对其操作
即为System.out.println();
6.合并流:SequenceInputStream类可以将多个输入流串流在一起,合并为一个输入流,因此,该流也被称为合并流
构造放法:SequenceInputStream(InputStream s1, InputStream s2):将两个流合并成一个输入流,先s1,后s2
exp:
import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.SequenceInputStream;//将1.java和2.java用一个合并输入流读取并复制到3.java中。public class CopyDemo2 {public static void main(String[] args) throws IOException {SequenceInputStream sis=new SequenceInputStream(new FileInputStream("1.java"), new FileInputStream("2.java"));FileOutputStream fo=new FileOutputStream("3.java");byte b[]=new byte[1024];//一次读取一个字节数组int len;//设定读取到的数组长度while((len=sis.read(b))!=-1){fo.write(b, 0, len);}sis.close();fo.close();}}
7.对象的序列化和反序列化
ObjectOutputStream:序列化流,把对象按照流一样的方式写到文件或者在网络中传输,writeObject(Object obj)
ObjectInputStream:反序列化流,把文件或者网络中的流对象数据还原对象,Object readObject()
注:要让类实现序列化,必须先实现Serializable接口,不然会报错:java.io.NotSerializableException
exp:
import java.io.Serializable;public class Student implements Serializable {private String name;private int age;public Student() {super();// TODO Auto-generated constructor stub}public Student(String name, int age) {super();this.name = name;this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}@Overridepublic String toString() {return "Student [name=" + name + ", age=" + age + "]";}}
测试类:
import java.io.EOFException;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;public class TestDemo {public static void main(String[] args) throws IOException, ClassNotFoundException {Student s1=new Student("a", 1);Student s2=new Student("b", 2);Student s3=new Student("c", 3);ObjectOutputStream ops=new ObjectOutputStream(new FileOutputStream("Student.txt"));ObjectInputStream ois=new ObjectInputStream(new FileInputStream("Student.txt"));ops.writeObject(s1);ops.writeObject(s2);ops.writeObject(s3);try {while(true){System.out.println(ois.readObject().toString());}} catch (EOFException e) {// TODO: handle exception//若用一般判断条件,则读完回报该异常,因此再此抓掉异常,遇到异常中断}ops.close();ois.close();}}
8.Properties:该类表示一个持久的属性集,其列表中每个键都对应一个字符串。
特点:该类就是一个可以保存在流中或从流中加载的map集合。
成员方法:A:添加元素,public Object setProperty(String key,String value)
B:获取元素,public String getProperty(String key)
public Set<String> stringPropertyNames()
exp:把集合中的数据存储到文本文件中,并且是按照键值对形式存储的,然后改变一个键所对应的值。
import java.io.FileOutputStream;import java.io.IOException;import java.util.Properties;import java.util.Set;public class propDemo1 {public static void main(String[] args) throws IOException {Properties prop =new Properties();FileOutputStream fos=new FileOutputStream("1.txt");prop.setProperty("a", "1");prop.setProperty("b", "2");prop.setProperty("c", "3");Set<Object> key=prop.keySet();for (Object o : key) {if(o.equals("b")){prop.setProperty("b", "100");}}prop.store(fos, "null");fos.close();}}
- java从入门到弃坑第十四天
- java从入门到弃坑第一天
- Java从入门到弃坑第三天
- java从入门到弃坑第五天
- java从入门到弃坑第七天
- java从入门到弃坑第八天
- java从入门到弃坑第九天
- java第十四天 泛型
- JAVA学习第十四天
- java第十四天
- Java学习第十四天
- Java学习第二十四天
- 十四天
- java从入门到超神
- JAVA 攻城狮 第十四天
- JAVA 攻城狮 第二十四天
- Java实训第十四天8/14
- JAVA从入门到精通
- js的||和 &&的妙用
- anguar js 日期和时间选择插件 angular-datetimepicker 使用时注意事项
- Java学习之Filter
- MWD-win7/10开机自启动vmware虚拟机CentOS-6.8-1
- Ajax引擎:ajax请求步骤详细代码
- java从入门到弃坑第十四天
- 38.Count and Say
- abap程序下载
- tensorflow的一些代码分析(二) tensorflow多层CNN代码分析
- tomcat 启动慢 Creation of SecureRandom instance for session ID generation using [SHA1PRNG]took [xx] mil
- 利用ROC检验算法准确性流程
- Unity3d+SQLite 中表名有无双引号的区别
- springmvc常用注解标签详解
- LR(0)分析算法