您当前的位置: 首页 >  android

ZhangJiQun&MXP

暂无认证

  • 2浏览

    0关注

    1187博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Android解决读取txt文件中文乱码问题,reload和cnvert区别,按行读取txt文件,按 |进行字符串分割

ZhangJiQun&MXP 发布时间:2019-05-24 16:58:15 ,浏览量:2

目录

 

Android中文乱码

reload和cnvert区别

按行读取txt文件,按"|"进行字符串分割,标红的地方时 关键代码。很简单

  Android中文乱码

 

 

reload和cnvert区别

在你所在的activity中设置编码格式,一般采用utf,有的采用gbk数据一般是别人下发数据你进行接收,那么就必须采用gbk进行格式转化;

上图中reload是你当前视图中看到的代码格式转换;

cnvert是将你跑应用时应用中文字显示的格式;

还有一种万能手法:

在build.gradle中添加  在android 目录中:compileOptions.encoding = "GBK”

  按行读取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_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 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 gate_list = new ArrayList();
        String path = strFilePath;
        ArrayList newList = new ArrayList();
        //打开文件
        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            
关注
打赏
1665659684
查看更多评论
0.0866s