android 檔案的讀取與寫入以及TextView的滾動

來源:互聯網
上載者:User

package training.android.com;</p><p>import java.io.FileNotFoundException;<br />import java.io.IOException;<br />import java.io.InputStream;<br />import java.io.OutputStream;<br />import android.app.Activity;<br />import android.os.Bundle;<br />import android.os.Handler;<br />import android.os.Message;<br />import android.view.KeyEvent;<br />import android.view.Menu;<br />import android.view.MenuItem;<br />import android.view.View;<br />import android.view.View.OnClickListener;<br />import android.widget.Button;<br />import android.widget.EditText;<br />import android.widget.ScrollView;<br />import android.widget.TextView;<br />import android.widget.Toast;</p><p>public class fileWriteRead extends Activity implements OnClickListener {<br />/** Called when the activity is first created. */<br />private EditText edit_Text;// 編緝文字框<br />private Button btn_Save;// 保相聚按鈕<br />private String text_of_input;// 輸入文本值<br />private OutputStream os;// 輸出資料流<br />private TextView showMyText;// 顯示文本<br />private Button btnOpenText, btnCleanText;// 開啟與清空按鈕事件<br />private Button btnOpenRaw;<br />private String Text_of_output;// 輸入出文本<br />private InputStream is;// 輸入資料流<br />private InputStream iputRaw;//靜態檔案流<br />private byte[] b;<br />private ScrollView scroll;<br />private int ori=0;<br />/**<br /> * 頁面的初始化<br /> *<br /> */<br />@Override<br />public void onCreate(Bundle savedInstanceState) {<br />super.onCreate(savedInstanceState);<br />// setContentView(R.layout.main);<br />showLayout("main");<br />UIinit("main");<br />Logic("main");<br />}</p><p>/**<br /> * 通過頁面名稱去顯示各頁面資訊 建立人:周昕 建立時間:2010-4-8 方法名稱:showLayout<br /> *<br /> * @param layoutName<br /> */<br />private void showLayout(String layoutName) {<br />if (layoutName.equals("main")) {<br />setContentView(R.layout.main);<br />}<br />if (layoutName.equals("openfile")) {<br />setContentView(R.layout.openfile);<br />}</p><p>}</p><p>/**<br /> * 通過頁面名稱去初始化控制項<br /> *<br /> * @param uiName<br /> * 建立人:周昕 &&&&&&&& 建立時間:2010-4-8<br /> */<br />private void UIinit(String uiName) {<br />if (uiName.equals("main")) {<br />edit_Text = (EditText) findViewById(R.id.Edit_text);<br />btn_Save = (Button) findViewById(R.id.Button_save);<br />}<br />if (uiName.equals("openfile")) {<br />btnOpenText = (Button) findViewById(R.id.Button_openTxt);<br />btnCleanText = (Button) findViewById(R.id.Button_clean);<br />btnOpenRaw = (Button) findViewById(R.id.Button_openRaw);<br />showMyText = (TextView) findViewById(R.id.TextView_showTxt);<br />}<br />}</p><p>/**<br /> * 通過頁面名稱去對各Button指定事件<br /> *<br /> * @param pageName<br /> * 建立人:周昕******** 建立時間:2010-4-8<br /> */<br />private void Logic(String pageName) {<br />if (pageName.equals("main")) {<br />btn_Save.setOnClickListener(this);<br />}<br />if (pageName.equals("openfile")) {<br />btnOpenText.setOnClickListener(this);<br />btnCleanText.setOnClickListener(this);<br />btnOpenRaw.setOnClickListener(this);<br />}<br />}</p><p>/**<br /> * 在Toast中顯示指定的欄位<br /> *<br /> * @param strTitle<br /> */<br />private void NoteDebug(String strTitle) {<br />Toast.makeText(this, strTitle, Toast.LENGTH_SHORT).show();<br />}</p><p>@Override<br />public void onClick(View v) {<br />// TODO Auto-generated method stub<br />switch (v.getId()) {<br />case R.id.Button_save:<br />NoteDebug("檔案儲存");<br />text_of_input = edit_Text.getText().toString();<br />try {<br />os = this.openFileOutput("txtME", MODE_PRIVATE);<br />os.write(text_of_input.getBytes());<br />} catch (FileNotFoundException e) {<br />NoteDebug("檔案關閉失敗" + e);<br />} catch (IOException e) {<br />NoteDebug("檔案寫入失敗" + e);<br />} finally {<br />try {<br />os.close();<br />} catch (IOException e) {<br />NoteDebug("關閉檔案失敗" + e);<br />}<br />}<br />edit_Text.setText("");<br />break;<br />case R.id.Button_openTxt:<br />NoteDebug("開啟檔案");<br />try {<br />is = this.openFileInput("txtME");<br />b = new byte[1024];<br />int length = is.read(b);<br />Text_of_output = new String(b);<br />setTitle("檔案字數" + length);<br />showMyText.setText(Text_of_output);<br />} catch (FileNotFoundException e) {<br />NoteDebug("檔案開啟失敗" + e);<br />} catch (IOException e) {<br />// TODO Auto-generated catch block<br />NoteDebug("檔案讀取失敗" + e);<br />} finally {<br />try {<br />is.close();<br />} catch (IOException e) {<br />NoteDebug("檔案關閉失敗" + e);<br />}<br />}<br />break;<br />case R.id.Button_openRaw:<br />NoteDebug("開啟靜態檔案");<br />try {<br />iputRaw = this.getResources().openRawResource(R.raw.filetext);<br />b = new byte[102400];<br />int length = iputRaw.read(b);<br />Text_of_output="";<br />Text_of_output = new String(b);<br />setTitle("靜態檔案字數" + length);<br />showMyText.setText(Text_of_output);<br />showMyText.setHorizontallyScrolling(true);<br />scroll = (ScrollView)findViewById(R.id.scroll);<br /> scroll.smoothScrollBy(ori, 0);</p><p>} catch (FileNotFoundException e) {<br />NoteDebug("靜態檔案開啟失敗" + e);<br />} catch (IOException e) {<br />// TODO Auto-generated catch block<br />NoteDebug("靜態檔案讀取失敗" + e);<br />} finally {<br />try {<br />iputRaw.close();<br />} catch (IOException e) {<br />NoteDebug("靜態檔案關閉失敗" + e);<br />}<br />}<br />break;<br />case R.id.Button_clean:<br />NoteDebug("清空檔案");<br />showMyText.setText("");<br />NoteDebug("清空");<br />break;<br />}</p><p>}</p><p>public boolean onCreateOptionsMenu(Menu menu) {<br />menu.add(0, 1, 1, "edit");<br />menu.add(0, 2, 2, "open");<br />menu.add(0, 3, 3, "clear");<br />return super.onCreateOptionsMenu(menu);<br />}</p><p>public boolean onOptionsItemSelected(MenuItem items) {<br />switch (items.getItemId()) {<br />case 1:<br />showLayout("main");<br />UIinit("main");<br />Logic("main");<br />NoteDebug("編緝檔案");<br />break;<br />case 2:<br />showLayout("openfile");<br />UIinit("openfile");<br />Logic("openfile");<br />NoteDebug("開啟件");<br />break;<br />case 3:<br />showLayout("openfile");<br />UIinit("openfile");<br />Logic("openfile");<br />NoteDebug("清空檔案");<br />break;<br />}<br />return super.onOptionsItemSelected(items);<br />}</p><p> private Handler message = new Handler(){<br /> public void handleMessage(Message msg) {<br /> doScrow();</p><p>}<br />};</p><p> public class TimerLoop implements Runnable {<br />@Override<br />public void run() {<br />// TODO Auto-generated method stub</p><p>while(true){<br />loop(500);</p><p>message.sendEmptyMessage(0);<br />}<br />}</p><p> }</p><p>//因為sleep()似乎不好用 所以採用這種方法計時<br /> public void loop(long i){<br /> long j = i;<br /> while(j>0){</p><p> j = j-1;<br />}</p><p> }<br /> public boolean onKeyDown(int keyCode, KeyEvent msg){<br />// Thread loop = new Thread(new TimerLoop());<br />// loop.start();</p><p> return super.onKeyDown(keyCode, msg);<br />}<br /> public void doScrow(){<br /> int now = scroll.getScrollY();</p><p> if(ori == now){<br /> scroll.scrollTo(now, 0);<br /> ori = -1;</p><p> }<br /> else {<br /> scroll.smoothScrollBy(10, 10);</p><p> ori = now;</p><p> }<br /> }<br />}

main.xml檔案

<?xml version="1.0" encoding="utf-8"?><br /><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"<br /> android:orientation="vertical"<br /> android:layout_width="fill_parent"<br /> android:layout_height="fill_parent"<br /> ></p><p><EditText<br /> android:id="@+id/Edit_text"<br /> android:layout_width="fill_parent"<br /> android:layout_height="350px"><br /> </EditText><br /><Button<br /> android:text="儲存"<br /> android:id="@+id/Button_save"<br /> android:layout_width="80px"<br /> android:layout_height="wrap_content"><br /> </Button><br /></LinearLayout><br />

 

open.xml

<?xml version="1.0" encoding="UTF-8"?><br /><AbsoluteLayout android:id="@+id/openlayout"<br />android:layout_width="fill_parent" android:layout_height="fill_parent"<br />xmlns:android="http://schemas.android.com/apk/res/android"><br /><!-- <ScrollView android:layout_weight="1" android:layout_width="fill_parent"<br />android:layout_height="wrap_content" android:scrollbars="vertical"<br />android:fadingEdge="vertical" android:id="@+id/scroll"><br /> --><br /> <ScrollView<br />android:id="@+id/scroll"<br />android:layout_width="fill_parent"<br /> android:layout_height="300dip" ><br /><LinearLayout android:layout_width="fill_parent"<br />android:layout_height="380px"><br /><TextView android:id="@+id/TextView_showTxt"<br />android:layout_width="314px" android:layout_height="373px"<br /> android:scrollbars="vertical" android:fadingEdge="vertical"</p><p>android:autoText="true" android:layout_x="3px" android:layout_y="3px"<br />><br /><!-- android:ellipsize="marquee" android:marqueeRepeatLimit="marquee_forever" --><br /></TextView><br /></LinearLayout><br /></ScrollView></p><p><Button android:id="@+id/Button_openTxt" android:layout_width="80px"<br />android:layout_height="wrap_content" android:text="開啟"<br />android:layout_x="2px" android:layout_y="378px"><br /></Button><br /><Button android:id="@+id/Button_openRaw" android:layout_width="80px"<br />android:layout_height="wrap_content" android:text="靜態檔案"<br />android:layout_x="102px" android:layout_y="378px"><br /></Button><br /><Button android:id="@+id/Button_clean" android:layout_width="80px"<br />android:layout_height="wrap_content" android:text="清空"<br />android:layout_x="239px" android:layout_y="378px"><br /></Button><br /></AbsoluteLayout><br />

 

 AndroidMainfest.xml

<?xml version="1.0" encoding="utf-8"?><br /><manifest xmlns:android="http://schemas.android.com/apk/res/android"<br />package="training.android.com" android:versionCode="1"<br />android:versionName="1.0"><br /><application android:icon="@drawable/icon" android:label="@string/app_name"><br /><activity android:name=".fileWriteRead" android:label="@string/app_name"><br /><intent-filter><br /><action android:name="android.intent.action.MAIN" /><br /><category android:name="android.intent.category.LAUNCHER" /><br /></intent-filter><br /></activity></p><p></application><br /><uses-sdk android:minSdkVersion="3" /><br /><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission><br /><uses-permission android:name="android.permission.MODE_WORLD_READABLE"></uses-permission><br /><uses-permission android:name="android.permission.MODE_WORLD_WRITEABLE"></uses-permission><br /></manifest>

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.