博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JAVA实现IO流读写文件
阅读量:4284 次
发布时间:2019-05-27

本文共 3306 字,大约阅读时间需要 11 分钟。

对包含多行数据的数据集进行预处理,读入文本文件数据集,为每一条记录增加一个唯一的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(); } } }}

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

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

你可能感兴趣的文章
linux在线安装软件
查看>>
gcc编译器简介
查看>>
《C专家编程》阅读笔记
查看>>
C语言指针5分钟教程
查看>>
c/c++常见关键字
查看>>
C++内存地址分配和内存区划分简介
查看>>
C++数值交换
查看>>
指针数组、数组指针、函数指针、指针函数
查看>>
float,double在内存中的存储方式
查看>>
int main(int argc,char* argv[])详解
查看>>
C++打印地址
查看>>
ARM处理器比较:A8/A9
查看>>
ARM处理器工作模式
查看>>
ARM处理器寄存器
查看>>
汇编语言学习
查看>>
ARM寻址方式
查看>>
ARM伪指令
查看>>
协处理器
查看>>
ARM处理器启动流程
查看>>
链接地址和存储地址
查看>>