Java I/O 操作的一些基本知识

1.文件类:File ,也是唯一的单独的文件类.可以对文件进行操作.其方法有:exists(),delete(),isDirectory(),createNewFile(),getName(),getPath(),mkdir()创建文件夹,

2.流,先分为输入输出流,之后再分为字节和字符输入输出流.
  (1)InputStream,OutputStream,是父类的输入输出流.是字节的输入输出流.主要的方法还是read(),当read()=-1的时候就是到了结尾.write是进行字节的输出.
  (2)Reader,Writer,是父类的输入输出流.是字符的输入输出流.主要的方法还是read(),当read()=-1的时候就是到了结尾.write是进行字符的输出.

3.字节流转换成字符流的桥梁.
  (1)InputStreamReader,此类是把输入流为字节的转换成字符流.
  (2)OutputStreamWriter,此类是把输出流为字节的转换成字符流.
对于以上的类,进行了转换,那就是把流成功转换成字符了,如果要向外输入,直接用字符流输出就可以了.

 1 public static void main(String[] args) throws IOException {
 2         File file1=new File("d:\","a.txt");
 3         File file2=new File("d:\","b.txt");
 4         FileInputStream fs1=new FileInputStream(file1);
 5         InputStreamReader f1isr=new InputStreamReader(fs1);
 6         //在这里不难发现,输出字节流转换成了字符流
 7         FileWriter fw2=new FileWriter(file2);
 8         int contents;
 9         while((contents=f1isr.read())!=-1){
10             fw2.write(contents);
11         }
12         fs1.close();
13         fw2.close();
14     }

 4.BufferedReader和BufferedWriter
  这个是一个以行为单位,进行对行操作,对行进行输入和输出.方法有readLine()是否等于null,newLine()生成新的一行.

5.PrintStream和PrintWriter两种类
  (1)PrintStream,打印输出流,是字节的输出.
  (2)PrintWriter,打印输出流,是字符为单位,在读取文本文件的时候尽量使用这个.
在java平台上,这两个是没有区别的,只有在跨平台的情况下才会可能出现问题.但是二者在java平台中都是可以输出各类数据的,比如String,int,char,Obect类型.注意是object类型.

6.ObjectInputStream和ObjectOutputStream两个对象序列化,是对对象进行序列化处理
  对于InputStream要进行

 1 File sfile = new File("d:\", "a.txt");
 2             ObjectInputStream in = new ObjectInputStream(new FileInputStream(
 3                     sfile));
 4  5             try {
 6                 object = in.readObject();//注意要进行定义object,并对定义的object判断类型,从而进行在控制台输出.
 7                 if (object instanceof ArrayList) {
 8                     ArrayList<Student> slist=(ArrayList<Student>)object;
 9                     for (Student student : slist) {
10                         for (Course course : student.getClist()) {
11                             System.out.println(student.getId() + "	" + student.getName()
12                                      + "	" + student.getAge() + "	" + course.getCourse()
13                                      + "	" + course.getAvgScore() + "	"
14                                      + course.getEndScore());
15                         }
16                     }
17                 }

  对于OutputStream来说,主要的还是如何对序列进行整理到一个文件上,要用到implements Serializable接口,即对对象进行序列化

 1 try {
 2             File sfile = new File("d:\", "a.txt");
 3             if (!sfile.exists()) {
 4                 sfile.createNewFile();
 5             }
 6             ObjectOutputStream out = new ObjectOutputStream(
 7                     new FileOutputStream(sfile));
 8             out.writeObject(slist);
 9             out.close();
10             File sfile = new File("d:\", "a.txt");
11             ObjectInputStream in = new ObjectInputStream(new FileInputStream(
12                     sfile));
13             Object object;

7.Scanner扫描器利用,其方法有很多nextInt(),next()(此是字符串),nextdouble().其分隔符是空格,只要利用空格就可以对下一个进行输入.回车也是其分隔符

原文地址:https://www.cnblogs.com/bequt/p/5008150.html