Android文檔統計——統計文檔字符數、單詞數、行數

用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

相關文章
相關標籤/搜索