JAVA文件-基本操作学习笔记

来源:互联网 发布:沉迷galgame知乎 编辑:程序博客网 时间:2024/06/11 19:05

1.流的概念

定义:数据流是指所有的数据通信通道

分类:

1

2.标准输入输出流(键盘,屏幕)

1)重要概念

标准输入输出都是System类中定义的类成员变量:

System.in:InputStream类型的,代表标准输入流,这个流是已经打开了的,默认状态对应于键盘输入。

System.out:PrintStream类型的,代表标准输出流,默认状态对应于屏幕输出

System.err:PrintStream类型的,代表标准错误信息输出流,默认状态对应于屏幕输出

也可通过重导向方法进行重新指定:

setIn(InputStream): 指定新的标准输入流

setOut(PrintStream):指定新的标准输出流

setErr(PrintStream):指定新的标准错误输出流

2)键盘输入,屏幕输出

import java.io.*;public class Echo {    public static void main(String[] args)  throws IOException     {        BufferedReader in = new BufferedReader(new InputStreamReader(System.in));        String s;        while((s = in.readLine()).length() != 0)           System.out.println(s); 10      } 11  } 

说明:
①以System.in作为参数,进一步创建了一个InputStreamReader流对象,它相当于字节流和字符流之间的一座桥梁,读取字节并将其转换为字符。
②BufferedReader用于对InputStreamReader处理后的信息进行缓冲,提高效率,它们都属于处理流。

3.文件操作

    3.1文本文件(FileWriter,BufferedWriter,FileReader,BufferedReader)

    写:

import java.io.*;  class Ex6_4 {    public static void main ( String[] args ) throws IOException        {        String fileName = "C://newHello.txt" ;
  1.         BufferedWriter out = new BufferedWriter(new FileWriter(fileName));
        out.write( "Hello!"  );        out.newLine() ; 10         out.write( "This is another text file using BufferedWriter,"  );   11          out.newLine(); ;12          out.write( "So I can use a common way to start a newline" ); 13          out.close();14      }15  }

 读 :

import java.io.*;class Ex6_5 {    public static void main ( String[] args )     {        String fileName = "C:/Hello.txt" , line;        try         {             BufferedReader in = new BufferedReader(new FileReader(fileName));10               line = in.readLine();   //读取一行内容11               while ( line != null ) 12               { 13                 System.out.println( line );14                  line = in.readLine();15               }16              in.close(); 17          }18         catch ( IOException iox ) 19         { 20              System.out.println("Problem reading " + fileName );  21         }22      }23  }
   
   3.2二进制文件(非字符)

   写:
  
基类:OutputStream
   继承类:①FileOutputStream
            ②DataOutputStream:具有写各种基本数据类型的方法(属于过滤流)
            ③BufferedOutputStream:对于大量数据的写入,可以提高效率(属于过滤流)
 

import java.io.*; class Ex6_8{  public static void main (String[] args) throws IOException   {        String fileName = "mixedTypes.dat" ;        DataOutputStream dataOut = new DataOutputStream(new BufferedOutputStream(                                       new FileOutputStream(fileName)));        dataOut.writeInt(0);10          System.out.println(dataOut.size() + " bytes have been written.");11          dataOut.writeDouble(31.2);12          System.out.println(dataOut.size() + " bytes have been written.");13          dataOut.writeBytes("JAVA");14          System.out.println(dataOut.size() + " bytes have been written.");15          dataOut.close();16    }17  }

  
   读:
  
基类:InputStream
   继承类:①FileInputStream
            ②DataInputStream:具有写各种基本数据类型的方法(属于过滤流)
            ③BufferedInputStream:对于大量数据的写入,可以提高效率(属于过滤流)

import java.io.*;public class Ex6_12 {    public static void main(String[] args) throws IOException     {        FileInputStream s=new           FileInputStream("c://Hello.txt");        int c;        while ((c = s.read()) != -1)  10              System.out.write(c);     11          s.close();12      }13  }


  读写综合题:
    
读写下面的发票数据:
    price      unit      description
    19.99      12      Java T-shirt
    9.99       8       Java Mug
      STEP1:使DataOutputStream 和另一个输出流建立连接

DataOutputStream out = new DataOutputStream(new FileOutputStream("invoice1.txt"));

      STEP2:用DataOutputStream专门的write方法将上述发票数据写到invoice1.txt

for (int i = 0; i < prices.length; i ++) {    out.writeDouble(prices[i]);  //单价    out.writeChar('/t');    out.writeInt(units[i]);      //数量    out.writeChar('/t');    out.writeChars(descs[i]);   //描述    out.writeChar('/n');}10  out.close();

  STEP3:基于刚生成的文件建立一个DataInputStream

DataInputStream in = new DataInputStream(new FileInputStream("invoice1.txt"));

  STEP4:通过DataInputStream专门的read方法把数据读取回来

try {    while (true)     {        price = in.readDouble();        in.readChar();       //throws out the tab        unit = in.readInt();           in.readChar();       //throws out the tab        char chr;10          desc = new StringBuffer(20);    11          while ((chr = in.readChar() != '/n') 12          {  desc.append(chr);   }13          System.out.println("You've ordered " + unit +  " units of " 14                             + desc + " at $" + price);15          total = total + unit * price;16      }    17  } 18  catch (EOFException e) { }19  System.out.println("For a TOTAL of: $" + total);20  in.close();


 

原创粉丝点击