用AndroidStudio解析統計文本文件中的字符數、單詞數、行數,用EditText顯示要解析的文本文檔。
首先是佈局文件:android
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="文件的內容:" android:textSize="15dp" /> <EditText android:id="@+id/edt_content" android:layout_width="match_parent" android:layout_height="wrap_content" /> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal"> <Button android:id="@+id/btn_show" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="保存" /> <Button android:id="@+id/btn_analysis" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="解析" /> </LinearLayout> <TextView android:id="@+id/tv_jiexi" android:layout_width="match_parent" android:layout_height="wrap_content" android:textSize="20dp" /> </LinearLayout>
而後須要把咱們所須要解析的文件來保存在手機上,而後經過按鈕監控來進行解析:數組
public class MainActivity extends AppCompatActivity implements View.OnClickListener { private EditText et_content; private Button btn_show; private Button btn_analysis; private TextView tv_read; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); } private void initView() { et_content = (EditText) findViewById(R.id.et_content); btn_show = (Button) findViewById(R.id.btn_show); btn_analysis = (Button) findViewById(R.id.btn_analysis); tv_read = (TextView) findViewById(R.id.tv_read); btn_show.setOnClickListener(this); btn_analysis.setOnClickListener(this); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.btn_show: show(); break; case R.id.btn_analysis: analysis(); break; } }
首先定義屬性:ide
private void write() { String s = et_content.getText().toString(); try { if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) { File sdDire = Environment.getExternalStorageDirectory(); FileOutputStream outFileStream = new FileOutputStream(sdDire.getCanonicalPath() + "/test.txt"); outFileStream.write(s.getBytes()); outFileStream.close(); Toast.makeText(this, "數據保存到text.txt文件了", Toast.LENGTH_LONG).show(); } else { Toast.makeText(this, "未找到內存卡", Toast.LENGTH_SHORT).show(); } } catch (Exception e) { e.printStackTrace(); } }
接下來解析文本文檔:佈局
private void analysis() { String st = ""; int words=0;//單詞數 int chars=0;//字符數 int lines=0;//行數 try { if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) { File file = new File(Environment.getExternalStorageDirectory().getCanonicalPath() + "/test.txt"); // 打開文件輸入流 FileInputStream fir = new FileInputStream(file); BufferedReader reads = new BufferedReader(new InputStreamReader(fir)); while ((st = reads.readLine()) != null) { words+=st.split("[ \\.,?]").length;//用於把一個字符串分割成字符串數組,字符串數組的長度,就是單詞個數 chars+=st.length();//字符串的長度,即字符數 lines++;//行數(因爲每次讀取一行,行數自加便可) } fir.close(); tv_read.setText("單詞數:"+words+",字符數:"+chars+",行數:"+lines); } } catch (Exception e) { e.printStackTrace(); } }
獲得下面的結果:
我的項目耗時記錄:this