请问java随机读取txt中的几个人名,,并显示出来,选出以后要从TXT里面删除这几个人名,能不能写下代码例子啊?(TXT文档中的人名是按行存储的)

解决方案 »

  1.   

    按行读TXT-->存数组-->使用随机数处理(选择、删除)-->重新按行写TXT
      

  2.   

    File a = new File("a.txt");
    a.get输入流  通过readline();把数据独到数组中
    随机从数据中去数字,根据 数组的长度通过new Random()取道下表
    然后去数组中取值 并且删除..
    写剩余数到数组
      

  3.   

    好像做抽奖的东西。3楼说的对。读到数组或者用list装。然后取出一个remove
      

  4.   

    如果文件非常的大,如几百M,几G,保存人名的时候,就需要定义特殊的格式:例如人名前的一个字母表示人名有效或者无效。
    当删除人名的时候,不是直接把它从文件中删除,而是使用RandomAccessFile修改此标志为已经删除.操作文件的都是流,如果向文件的中间部分添加了内容,如果想在要此位置后面的内容都还存在,必须把此后面的内容重新再向文件里再写一次,不会自动向后移动的。
      

  5.   

    package org.ccid.test;import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.InputStreamReader;
    import java.util.ArrayList;
    import java.util.List;/**
     * @user:   Administrator
     * @author: yougang
     * @version:1.0
     * @created:Jan 6, 2011 
     */public class ReadName {
        public static void main(String[] args) throws Exception{
    FileInputStream fileRead = new FileInputStream(new File("D:\\name.txt"));
    InputStreamReader inputStreamReader = new InputStreamReader(fileRead,"UTF-8");
    BufferedReader buffer = new BufferedReader(inputStreamReader);
    String tempStr = "";
    List list = new ArrayList();
    System.out.println("所有人名如下:");
    while((tempStr=buffer.readLine())!=null) {
    System.out.println(tempStr);
                list.add(tempStr);
    }
    System.out.println("-------------------------");

    //每次随机删除三个人名
    System.out.println("删除的人名如下:");
    for (int i = 0; i < 3; i++) {
    int tempIndex = (int)(Math.random()*4);
    System.out.println(list.get(tempIndex));
    list.remove(tempIndex);
    }
    System.out.println("--------------------------");
    System.out.println("剩下的人名如下:");
    for (int i = 0; i < list.size(); i++) {
    System.out.println(list.get(i));
    }
    }
    }
      

  6.   

    如果文本文件是无序文件,并且,是小文件,
    可以先将所有人名读出,取出数据,然后回写到新文件中,替换原有文件。
    文件中的人名,有可能是重复的。final String FileName = "namse.txt";//保存人名的文件名称。
    final int NamesCount = 5;//待取出的人名数量。
    TreeMap<Integer,String> result = new TreeMap<Integer,String>();//取出的人名。
    File file = new File(FileName);
    File tmp = File.createTempFile("names_tmp","txt");
    ArrayList<String> names = new ArrayList<String>();
    BufferedReader reader = new BufferedReader(new FileReader(file));
    BufferedWriter writer = new BufferedWriter(new FileWriter(tmp));
    String line = null;
    while((line = reader.readLine())!=null){
        names.add(line.trim());
    }
    reader.close();
    HashSet<Integer> indexes = new HashSet<Integer>();
    Random rand = new Random();
    while(NamesCount>indexes.size()){
        indexes.add(rand.nextInt(names.size());
    }
    for(Iterator<Integer> itr = indexes.iterator();itr.hasNext();){
        int index = itr.nex();
        result.put(index,name.remove(index));
    }
    for(String name : names){
        writer.write(name);writer.newLine();
    }
    writer.close();
    file.delete();
    tmp.renameTo(file);
    //打印随机取出的人名和序号。
    for(Iterator<Map.Entry<Integer,String>> iter = result.entrySet().iterator();
                iter.hasNext();){
        Map.Entry<Integer,String> e = iter.next();
        System.out.println(e.getValue()+"\t"+e.getKey());
    }
    上述代码未经测试,谢谢。
      

  7.   

    非要 txt么  感觉 properties文件更灵活一些 直接键值对   不用度来读取的  性能也很高
      

  8.   

    那怎么将剩下的人名再逐行写回TXT文件呢?