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

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();


 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值