目录
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
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?