zoukankan      html  css  js  c++  java
  • 文件的读写操作

    http://www.javaeye.com/topic/310408
    题目:文件intel.txt,内容如下:

    小王【空格】10000【回车】
    小强【空格】12345【回车】
    小张【空格】2342 【回车】
    小强【空格】1030 【回车】
    小周【空格】1020 【回车】

    请编写一程序从test.txt中读取数据,并按数字大小排序后写入另一文件sun.txt(写入格式同上)

    下面是自己编写的程序代码,小弟刚毕业所学有限所幸要求功能是实现了,然必定有不规范不合理之处还望大家多多指教修正!!(希望大家提供些更合理的排序)
    ------------------------------------------------------------------
    import com.j2se.file.MyIntComparator;//自定义比较器
    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.FileReader;
    import java.io.IOException;
    import java.io.PrintWriter;
    import java.util.Iterator;
    import java.util.TreeMap;


    /***
    *读文件test.txt内容(文件内容格式: 小王【空格】10000【回车】
    *                                小强【空格】12345【回车】
    *并对该文件内容按存款数排序,然后将其写入另一文件内
    *
    *****/
    public class fileSort {

    /*****
    * 以行为单位读写文件
                *@param fileName 源文件
                *@param toFileName 目标文件
    * ****/
    public static void read_writeFile(String fileName,String toFileName){
    File file = new File(fileName);
    BufferedReader reader=null;
    TreeMap<Integer,String> map = new TreeMap<Integer,String>(new MyIntComparator());
    File toFile = new File(toFileName);
    PrintWriter writer = null;
    try{
    System.out.println("------------------读文件开始-------------------------------");
    System.out.println();
    System.out.println("以行为单位读取文件内容,每次读取一整行");
    reader = new BufferedReader(new FileReader(file));
    String tempString = null;
    String[] ss = null;
    int line = 1;

    //一次读一行,直到读取为null
    while((tempString = reader.readLine()) != null){
    //显示行号
    System.out.println("line number is "+line+"::"+tempString);
    line++;

    ss = tempString.split(" ");
    int i = 0;
    String value = ss[i];
    int key =Integer.parseInt(ss[i+1]);
    System.out.println("key is:"+key);
    System.out.println("value is:"+value);
    map.put(key, value);

    }
    System.out.println("------------------读文件结束-------------------------------");
    System.out.println();
    System.out.println("------------------写文件开始-------------------------------");
    System.out.println("写文件开始:"+file.getAbsolutePath());
    writer = new PrintWriter(new FileOutputStream(toFile));
    if(map !=null){
    Object key = null;
    Object value = null;
    // 使用迭代器遍历Map的键,根据键取值
    Iterator it = map.keySet().iterator();
    while (it.hasNext()){
    key = it.next();
    value = map.get(key);
    System.out.println("key is :"+key);
    System.out.println("vlaue is :"+value);
    //能写各种基本类型数据
    writer.print(value+" ");
    writer.print(key+" ");
    //换行
    writer.println();
    //写入文件
    writer.flush();
    }

    System.out.println("写文件"+file.getAbsolutePath()+"成功!");
    System.out.println("---------------------------写文件结束--------------------------");
    }
    }catch(IOException e){
    e.printStackTrace();
    }finally{
    if(reader != null){
    try{
    reader.close();
    }catch(IOException e1){
    e1.printStackTrace();
    }
    }
    if(writer !=null){
    writer.close();
    }
    }

    }

    public static void main(String[] args){
    String fileName = "D:/test.txt";
    String toFileName = "D:/test1.txt";
    fileSort.read_writeFile(fileName, toFileName);
    }
    }

    ----------------自定义比较器--------------------------------------
    import java.util.Comparator;

    /**
    * 整数比较器,将整数按降序排列
    */
    class MyIntComparator implements Comparator{

    /**
    * o1比o2大,返回-1;o1比o2小,返回1。
    */
    public int compare(Object o1, Object o2) {
    int i1 = ((Integer)o1).intValue();
    int i2 = ((Integer)o2).intValue();
    if (i1 < i2){
    return 1;
    }
    if (i1 > i2){
    return -1;
    }
    return 0;
    }
    }
  • 相关阅读:
    阿里巴巴FastJSON使用实例
    JSON知识点
    java序列化和反序列化
    JAVA里的VO、BO、PO分别指什么?
    Oracle基础语句练习记录
    maven命令
    maven官方教程
    linux下开启、关闭、重启mysql服务
    linux常用命令记录
    动态网页项目无法启动
  • 原文地址:https://www.cnblogs.com/danghuijian/p/4400812.html
Copyright © 2011-2022 走看看