java IO(字符流)

import java.io.*;
import java.util.Calendar;

/**
 * 字符流读写的例子类
 */
public class FileIoDemo {
 
 //打印方法
 public static void print(String s)
 {
  System.out.println(s);
 }
 

    //取得现在的日期,格式yyyymmddhhmmss
 public static String getCurrentDate() {
  Calendar cal = Calendar.getInstance();
  int year = cal.get(cal.YEAR);
  int month = cal.get(cal.MONTH) + 1;
  int day = cal.get(cal.DAY_OF_MONTH);
  int hour = cal.get(cal.HOUR_OF_DAY);
  int minute = cal.get(cal.MINUTE);
  int second = cal.get(cal.SECOND);
  String cDate = Integer.toString(year);
  if (month < 10) {
   cDate = cDate + "0" + Integer.toString(month);
  } else {
   cDate = cDate + Integer.toString(month);
  }
  if (day < 10) {
   cDate = cDate + "0" + Integer.toString(day);
  } else {
   cDate = cDate + Integer.toString(day);
  }
  if (hour < 10) {
   cDate = cDate + "0" + Integer.toString(hour);
  } else {
   cDate = cDate + Integer.toString(hour);
  }
  if (minute < 10) {
   cDate = cDate + "0" + Integer.toString(minute);
  } else {
   cDate = cDate + Integer.toString(minute);
  }
  if (second < 10) {
   cDate = cDate + "0" + Integer.toString(second);
  } else {
   cDate = cDate + Integer.toString(second);
  }
  return cDate.trim();
 }
 
 //文件字符流输入输出测试方法
 public static void fileIOtest()
 {
  String path_source="G:/logs/fileIOtest/source/";
  String fileName_source="source.txt";
  String path_bak="G:/logs/fileIOtest/bak/";
  String fileName_bak;
  
  try {
            //读文件
   File f_s=new File(path_source,fileName_source);   //f_s指向路径为path_source,名字为fileName_source的文件
   FileReader fr_s=new FileReader(f_s);              //创建可以读取文件内容的Reader类的对象
   BufferedReader br_s=new BufferedReader(fr_s,8192);//创建缓冲长度为8192的缓冲字符流对象
   String str;
   int    i;
   print(f_s.exists()?fileName_source+" exist":fileName_source+" not exist");
   print(f_s.getParent());//返回父目录名
   print(f_s.getAbsolutePath());
   
   br_s.mark(8192);//在输入流的当前点放置一下标记,该流在读取8192个字节之前都有效
   while( (str=br_s.readLine())!=null)
   {
    print(str);
   }
   
   //读写文件
   fileName_bak=getCurrentDate()+".txt";
   File f_b=new File(path_bak,fileName_bak);
   FileWriter fw_b=new FileWriter(f_b);         //创建可以写文件内容的Writer类的对象
   BufferedWriter bw_b=new BufferedWriter(fw_b);//创建缓冲长度为默认缓冲器长度的缓冲字符流对象
   //第一种读写方式
   /*br_s.reset();//重新设置输入指针到先前设置的标志处
   while( (str=br_s.readLine())!=null)//此种写入方式较快,但写入时不会显示换行
   {
    bw_b.write(str+'/n');
    bw_b.flush();
   }*/
   //第二种读写方式
   /*br_s.reset();//重新设置输入指针到先前设置的标志处
   while( (i=br_s.read())!=-1)//此种写入方式较慢,但写入时会显示换行,和原文件一样
   {
    bw_b.write(i);
    bw_b.flush();
   }*/
   bw_b.close();  fw_b.close();//关闭相关对象
   br_s.close();  fr_s.close();
   print(f_b.delete()?"file delete success":"file delete failure");
   f_b=new File(path_bak,fileName_bak);
   //在重命文件名时,必须注意:
   //1 相关的BufferedWriter,BufferReader,FileReader,FileWriter对象必须关闭
   //2 新文件的路径必须存在,新文件路径可以和源文件不在同一个路径
            //3 新文件名不能存在                    
   print(f_s.renameTo(f_b)?"first rename success":"first rename failure");
   print(f_b.renameTo(f_s)?"second rename success":"second rename failure");
  } catch (FileNotFoundException e) {
   e.printStackTrace();
  } catch (IOException e) {
   e.printStackTrace();
  }finally{
  }
  
 }
 
 // 测试函数
 public static void main(String[] args) {
  fileIOtest();
 }
 
 

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值