Android解决读取txt文件中文乱码问题,按行读取txt文件,按"|"进行字符串分割

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_38998213/article/details/90519370
Android解决读取txt文件中文乱码问题,按行读取txt文件,按"|"进行字符串分割,标红的地方时 关键代码。很简单,但是网上不适用,几句代码的是就是正的很复杂,简单好还是。、



public class MainActivity extends AppCompatActivity {
    private static final String TAG = "mainactivity";
    Button button;
    Button buttonScanner;
    String fileName_xls_string = "/sdcard/import_inventory_data.xls";
    String fileName_TXT_string = "/sdcard/import_inventory_data.TXT";
    @BindView(R.id.im_11)
    ImageView im11;
    @BindView(R.id.im_12)
    ImageView im12;
    @BindView(R.id.im_13)
    ImageView im13;
    @BindView(R.id.im_21)
    ImageView im21;
    @BindView(R.id.im_22)
    ImageView im22;
    @BindView(R.id.im_23)
    ImageView im23;
    @BindView(R.id.im_31)
    ImageView im31;
    List<data_new> data_news;
    private Object usb;
    TextView textView;

    @TargetApi(Build.VERSION_CODES.LOLLIPOP)
    @RequiresApi(api = Build.VERSION_CODES.KITKAT)
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ButterKnife.bind(this);
//        updateApks();
        if (android.os.Build.VERSION.SDK_INT > 9) {
            StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
            StrictMode.setThreadPolicy(policy);
        }
        textView=(TextView) findViewById(R.id.tv_version);
        textView.setText("当前版本: "+Tools.getVersion(this)+"");
        InitData();
        IntentFilter filter = new IntentFilter();
        filter.addAction("com.android.server.scannerservice.broadcast");
        this.registerReceiver(mResultReceiver, filter);
       requestPermissions();
        UpdateManager updateManager=new UpdateManager(MainActivity.this,"http://121.41.117.1:98/pcheck/version_pcheck.xml");
        updateManager.checkUpdate();
//        getUsb();

    }

    private void InitData() {

        //数据查询
        data_news = DBManager.getInstance(MainActivity.this).queryUserList();
    }

    //文件读取 execel格式
    public List ReadExecelTwo(String strFilePath) throws IOException, BiffException {
        List<data_new> gate_list = new ArrayList<>();
        Sheet sheet;
        Workbook book;

        //Q1G_Path为要读取的excel文件完全路径名
        book = Workbook.getWorkbook(new File(strFilePath));

        //获得第一个工作表对象(ecxel中sheet的编号从0开始,0,1,2,3,....)
        sheet = book.getSheet(0);

        for (int i = 2; i < sheet.getRows(); i++) {
            //列对应Date对象标记-1
            data_new gate = new data_new();
            gate.setID(i - 1);//(列,行);
            gate.setNUMBERING(sheet.getCell(0, i).getContents());//(列,行);
            gate.setNAME(sheet.getCell(1, i).getContents());
            gate.setCLASSIFICATION(sheet.getCell(2, i).getContents());
            gate.setGETTING_METHOR(sheet.getCell(3, i).getContents());
            gate.setSPECIFICATIONA(sheet.getCell(4, i).getContents());
            gate.setCOUNTER(sheet.getCell(5, i).getContents());
            gate.setGET_THE_DATA(sheet.getCell(6, i).getContents());
            gate.setDATA_O_ENTRY(sheet.getCell(7, i).getContents());
            gate.setVALUE_TYPE(sheet.getCell(8, i).getContents());
            gate.setBOOK_AMOUNT(sheet.getCell(9, i).getContents());
            gate.setVALUE_MONEY(sheet.getCell(10, i).getContents());
            gate.setINVENTORY_AMOUNT(sheet.getCell(11, i).getContents());
            gate.setINVENTORY_RESULT(sheet.getCell(12, i).getContents());
            gate.setLOCATION(sheet.getCell(13, i).getContents());
            gate.setUSER_OF_DEPARTMENT(sheet.getCell(14, i).getContents());
            gate.setUSERS(sheet.getCell(15, i).getContents());
            gate.setNOTE(sheet.getCell(16, i).getContents());
            gate.setStatus("未盘");
            gate_list.add(gate);
        }
        DBManager.getInstance(MainActivity.this).insertUserList(gate_list);
        /*数据导出完成弹框*/
        AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
        builder.setTitle("提示");
        builder.setMessage("数据导出完成");

        builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                Toast.makeText(MainActivity.this, "已经导出数据", Toast.LENGTH_SHORT).show();
            }
        });
        AlertDialog dialog = builder.create();
        dialog.show();
        return gate_list;
    }
    //文件读取2 txt格式
    public List ReadTxTwo(String strFilePath) {
        List<data_new> gate_list = new ArrayList<>();
        String path = strFilePath;
        ArrayList<String> newList = new ArrayList<String>();
        //打开文件
        File file = new File(path);
        //如果path是传递过来的参数,可以做一个非目录的判断
        if (file.isDirectory()) {
            Log.d("TestFile", "The File doesn't not exist  isDirectory");
        } else {
            try {
                InputStream instream = new FileInputStream(file);
                if (instream != null) {
                    InputStreamReader inputreader = new InputStreamReader(instream);
                    BufferedReader buffreader = new BufferedReader(inputreader);
                    String line;
                    String strLine;
                    BufferedReader  reader = new BufferedReader(new InputStreamReader(new FileInputStream(file),"GBK"));//Android解决读取txt文件中文乱码问题,
                    //分行读取
                    while ((line = reader.readLine()) != null) {
                        newList.add(line + "\n");   //按行读取txt文件,
                    }
                    for (int i = 0; i < newList.size(); i++) {
                        Log.d(TAG, "ReadTxtFile: " + newList.get(i));
                        String data = newList.get(i);
                        String[] arr = data.split("\\|");//根据“ ”和“,”区分 //按"|"进行字符串分割,标
                        data_new gate = new data_new();
                        gate.setID(i - 1);//(列,行);
                        gate.setNUMBERING(arr[0]);//(列,行);
                        gate.setNAME(arr[1]);
                        gate.setBOOK_AMOUNT(arr[2]);
                        gate.setVALUE_MONEY(arr[3]);
                        gate.setStatus("未盘");
                        gate_list.add(gate);
                    }
                    DBManager.getInstance(MainActivity.this).insertUserList(gate_list);
        /*数据导出完成弹框*/
                    AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
                    builder.setTitle("提示");
                    builder.setMessage("数据导出完成");

                    builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            Toast.makeText(MainActivity.this, "已经导出数据", Toast.LENGTH_SHORT).show();
                        }
                    });
                    AlertDialog dialog = builder.create();
                    dialog.show();
                    instream.close();
                }
            } catch (FileNotFoundException e) {
                Log.d("TestFile", "The File doesn't not exist FileNotFoundException");
            } catch (IOException e) {
                Log.d("TestFile", e.getMessage());
            }
        }
        return gate_list;
    }

    private BroadcastReceiver mResultReceiver = new BroadcastReceiver() {

        @Override
        public void onReceive(Context context, Intent intent) {
            // TODO Auto-generated method stub
            if (intent.getAction().equals("com.android.server.scannerservice.broadcast")) {
                Log.d(TAG, "mResultReceiver scannerdata=" + intent.getStringExtra("scannerdata" + "1212121212121"));
//                textView.setText(getString(R.string.m_1111) + intent.getStringExtra("scannerdata"));
            }
        }

    };

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

    }

    @OnClick({R.id.im_11, R.id.im_12, R.id.im_13, R.id.im_21, R.id.im_22, R.id.im_23, R.id.im_31})
    public void onViewClicked(View view) {
        switch (view.getId()) {

            case R.id.im_11://资产导入
//                UpdateManager updateManager=new UpdateManager(MainActivity.this,"http://121.41.117.1:98/pcheck/version_pcheck.xml");
//                updateManager.checkUpdate();
                AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);

                builder.setTitle("提示");
                builder.setMessage("点击确定导入数据");
                builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        Toast.makeText(MainActivity.this, "取消", Toast.LENGTH_SHORT).show();
                    }
                });
                builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        try {
                            File fileName_xls = new File(fileName_xls_string);
                            File fileName_TXT = new File(fileName_TXT_string);
                            if (fileName_xls.exists()&&fileName_TXT.exists()){
                                Toast.makeText(MainActivity.this, "目录中存在txt和xls导入文件,请删除不需导入文件", Toast.LENGTH_LONG).show();
                            }else {
                                //根据文件类型读取文件
                                if (fileName_xls.exists()){
                                    ReadExecelTwo(fileName_xls_string);
                                } else if (fileName_TXT.exists()){
                                    ReadTxTwo(fileName_TXT_string);
                                }
                            }

                        } catch (IOException e) {
                            e.printStackTrace();
                        } catch (BiffException e) {
                            e.printStackTrace();
                        }
                    }
                });
                AlertDialog dialog = builder.create();
                dialog.show();


                break;
            case R.id.im_12://资产导出
//                SelfDialog.getInstanceYesAndNo
//                        (MainActivity.this,"提示","确定导出数据","确定","取消")
//                .buildYesAndNoDialog();
                AlertDialog.Builder builder12 = new AlertDialog.Builder(MainActivity.this);
                builder12.setTitle("提示");
                builder12.setMessage("确定导出数据");
                builder12.setNegativeButton("取消", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        Toast.makeText(MainActivity.this, "取消", Toast.LENGTH_SHORT).show();
                    }
                });
                builder12.setPositiveButton("确定", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        //导出数据Excel调用
                        ExpportDataBeExcel expportDataBeExcel = new ExpportDataBeExcel(MainActivity.this);
                        data_news = DBManager.getInstance(MainActivity.this).queryUserList();
                        expportDataBeExcel.exportData(data_news);
                    }
                });
                AlertDialog dialog12 = builder12.create();
                dialog12.show();

                break;
            case R.id.im_13://数据重置
                AlertDialog.Builder builder13 = new AlertDialog.Builder(MainActivity.this);
                builder13.setTitle("提示");
                builder13.setMessage("确定数据重置");
                builder13.setPositiveButton("确定", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        for (int i=0;i<data_news.size();i++){
                            data_new dataNew=data_news.get(i);
                            dataNew.setID(dataNew.getID());
                            dataNew.setINVENTORY_AMOUNT("0.00");
                            dataNew.setINVENTORY_RESULT("");
                            dataNew.setStatus("未盘");
                            DBManager.getInstance(MainActivity.this).updateUser_all(dataNew);
                        }
                        AlertDialog.Builder builder131 = new AlertDialog.Builder(MainActivity.this);
                        builder131.setTitle("提示");
                        builder131.setMessage("数据重置完成");
                        builder131.setPositiveButton("确定", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                                Toast.makeText(MainActivity.this, "确定", Toast.LENGTH_SHORT).show();
                            }
                        });
                        AlertDialog dialog131 = builder131.create();
                        dialog131.show();
                    }
                });
                builder13.setNegativeButton("取消", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        Toast.makeText(MainActivity.this, "取消", Toast.LENGTH_SHORT).show();
                    }
                });
                AlertDialog dialog13 = builder13.create();
                dialog13.show();
                break;
            case R.id.im_21://资产盘点
                Intent intent21 = new Intent(MainActivity.this, ActivityPropertyCheckActivity.class);
                startActivity(intent21);
//                CustomDialog dialog1=new CustomDialog.Builder(MainActivity.this)
//                        .view(R.layout.dialog_layout)
//                        .addViewOnclick(R.id.btn_dialog_cancel, new View.OnClickListener() {
//                            @Override
//                            public void onClick(View v) {
//                                Toast.makeText(MainActivity.this, "quxiao", Toast.LENGTH_SHORT).show();
//                            }
//                        })
//                        .addViewOnclick(R.id.btn_dialog_go, new View.OnClickListener() {
//                            @Override
//                            public void onClick(View v) {
//                                Toast.makeText(MainActivity.this, "quxiao", Toast.LENGTH_SHORT).show();
//                            }
//                        })
//                        .build();
//                //代码设置view属性
//                TextView tv_title = dialog1.findView(R.id.txt_dialog_title);
//                TextView tips = dialog1.findView(R.id.txt_dialog_message);
//                TextView tv_update = dialog1.findView(R.id.btn_dialog_go);
//                tv_title.setText("辞职信");
//                tips.setText("由于程序猿这行业是高危行业,所以我决定明天就向老板申请离职,毕竟世界那么大,我还想活着去看看");
//                tv_update.setText("立即辞职");
//                dialog1.show();
                break;
            case R.id.im_22://资产查询
                Intent intent22 = new Intent(MainActivity.this, AssertLookActivity.class);
                startActivity(intent22);
                break;
            case R.id.im_23://清查结果
                Intent intent23 = new Intent(MainActivity.this, Result_look_TabLayoutActivity.class);
                startActivity(intent23);
                break;
            case R.id.im_31://退出系统
                AlertDialog.Builder builder2 = new AlertDialog.Builder(MainActivity.this);
                builder2.setTitle("提示");
                builder2.setMessage("确定退出?");
                builder2.setNegativeButton("取消", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        Toast.makeText(MainActivity.this, "取消", Toast.LENGTH_SHORT).show();
                    }
                });
                builder2.setPositiveButton("退出", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        System.exit(0);
                    }
                });
                AlertDialog dialog2 = builder2.create();
                dialog2.show();
                break;
        }
    }

    private void requestPermissions() {
        RxPermissions rxPermission = new RxPermissions(this);
        rxPermission
                .requestEach(
                        Manifest.permission.READ_EXTERNAL_STORAGE,
                        Manifest.permission.WRITE_EXTERNAL_STORAGE
//                        Manifest.permission.ACTION_USB_PERMISSION

                )
                .subscribe(new Consumer<Permission>() {
                    @Override
                    public void accept(Permission permission) throws Exception {
                        if (permission.granted) {
                            // 用户已经同意该权限
                            Log.d(TAG, permission.name + " is granted.");
                        } else if (permission.shouldShowRequestPermissionRationale) {
                            // 用户拒绝了该权限,没有选中『不再询问』(Never ask again),那么下次再次启动时。还会提示请求权限的对话框
                            Log.d(TAG, permission.name + " is denied. More info should be provided.");
                        } else {
                            // 用户拒绝了该权限,而且选中『不再询问』
                            Log.d(TAG, permission.name + " is denied.");
                        }
                    }
                });
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        if (mResultReceiver != null) {
            this.unregisterReceiver(mResultReceiver);
        }
    }

    @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
    public Object getUsb() {
        UsbManager manager = (UsbManager) getSystemService(Context.USB_SERVICE);

        HashMap<String, UsbDevice> deviceList = manager.getDeviceList();
        Iterator<UsbDevice> deviceIterator = deviceList.values().iterator();
        while(deviceIterator.hasNext()){
            UsbDevice device = deviceIterator.next();
            //your code
            Log.d(TAG, "getUsb: "+device.getDeviceName()+"/"+device.getManufacturerName()+"/"+device.getProductName());
        }
        return usb;
    }
}

猜你喜欢

转载自blog.csdn.net/qq_38998213/article/details/90519370