JAVA实现IO流读写文件

对包含多行数据的数据集进行预处理,读入文本文件数据集,为每一条记录增加一个唯一的ID,并保存成一个新的文本文件。其中每行的ID生成规则为:每一条记录对应生成0-33随机数,每个数对应一个特定省份,最后原始记录和新生成的省份标签一起写入新的文本文件中

Shell终端执行语句

#!/bin/bash
  • #下面设置输入文件,把用户执行pre_deal.sh命令时提供的第一个参数作为输入文件名称
  • infile=$ 1
  • #下面设置输出文件,把用户执行pre_deal.sh命令时提供的第二个参数作为输出文件名称
  • outfile=$ 2
  • #注意,最后的$infile> $outfile必须跟在}’这两个字符的后面
  • awk -F "," 'BEGIN{
  • srand();
  • id= 0;
  • Province[ 0]= "山东";Province[ 1]= "山西";Province[ 2]= "河南";Province[ 3]= "河北";Province[ 4]= "陕西";Province[ 5]= "内蒙古";Province[ 6]= "上海市";
  • Province[ 7]= "北京市";Province[ 8]= "重庆市";Province[ 9]= "天津市";Province[ 10]= "福建";Province[ 11]= "广东";Province[ 12]= "广西";Province[ 13]= "云南";
  • Province[ 14]= "浙江";Province[ 15]= "贵州";Province[ 16]= "新疆";Province[ 17]= "西藏";Province[ 18]= "江西";Province[ 19]= "湖南";Province[ 20]= "湖北";
  • Province[ 21]= "黑龙江";Province[ 22]= "吉林";Province[ 23]= "辽宁"; Province[ 24]= "江苏";Province[ 25]= "甘肃";Province[ 26]= "青海";Province[ 27]= "四川";
  • Province[ 28]= "安徽"; Province[ 29]= "宁夏";Province[ 30]= "海南";Province[ 31]= "香港";Province[ 32]= "澳门";Province[ 33]= "台湾";
  • }
  • {
  • id=id+ 1;
  • value= int(rand()* 34);
  • print id "\t"$ 1 "\t"$ 2 "\t"$ 3 "\t"$ 5 "\t"substr($ 6, 1, 10) "\t"Province[value]
  • } ' $infile> $outfile
  • **java语言:**
    import java.io.*;
    import java.util.Random;
     
    public class bigData {
     
        public static void main(String[] args) {
            FileInputStream fis = null;//文件输入流
            FileOutputStream fos = null;//文件输出流
            InputStreamReader isr = null;
            OutputStreamWriter osw = null;
            BufferedReader br = null;
            BufferedWriter bw =null;
            try {
                String str = "";
                String str1 = "";
                String str2 = "";
                int rand;
                fis = new FileInputStream("e:\\bigdatain.txt");// 读入本地文件
                fos = new FileOutputStream("e:\\bigdataout.txt");//写入本地文件
     
                isr = new InputStreamReader(fis);// InputStreamReader
                osw = new OutputStreamWriter(fos,"UTF-8");//写入文件编码格式为UTF-8
     
                br = new BufferedReader(isr);// 从字符输入流中读取文件中的内容
                bw = new BufferedWriter(osw);//将字符输出流写入到文件中
     
                String a[] = {"山东","山西","河南","河北","陕西","内蒙古","上海市","北京市","重庆市","天津市","福建","广东",
                              "广西","云南", "浙江","贵州","新疆","西藏","江西","湖南","湖北","黑龙江","吉林","辽宁","江苏",
                              "甘肃", "青海","四川","安徽","宁夏","海南","香港","澳门","台湾"};
                StringBuffer strb= new StringBuffer();//定义一个可变类型的String
     
                while ((str = br.readLine()) != null) {
                    rand=new Random().nextInt(35);//生成0-34随机数
                    str1 = "\t"+a[rand] + "\n";//读出对应标识ID
                    str2=strb.append(str).append(str1).toString();//当读取的一行不为空时,把读到的str和str1进行连接并把值赋给str2
                }
                System.out.println(str2);// 打印出str2
                bw.write(str2+"\n");//写入文件
     
            } catch (FileNotFoundException e) {
                System.out.println("找不到指定文件");
            } catch (IOException e) {
                System.out.println("读取/写入文件失败");
            } finally {
                try {
                    br.close();
                    isr.close();
                    fis.close();
                    bw.close();
                    osw.close();
                    fos.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
    
    

    因为数据太多太大,花费时间比较多,所以选择简单地创建一个文件来进行演示,结果显示如下:(左:读入文件;右:写入文件)


    JAVA实现IO流读写文件_第1张图片

    有什么问题欢迎大家留言多多指教。


    你可能感兴趣的:(java,基础)