Android读写文件和TextView的滚动

来源:互联网 发布:Mac Air进水没有保修 编辑:程序博客网 时间:2024/05/21 17:23

一、      resource中的raw文件夹中获取文件并读取数据(资源文件只能读不能写)

String res =""; 

try{ 

InputStream in =getResources().openRawResource(R.raw.bbi); 

//\Test\res\raw\bbi.txt,

  intlength = in.available();       

  byte[] buffer =newbyte[length];        

  in.read(buffer);         

  //res = EncodingUtils.getString(buffer, "UTF-8");

  //res = EncodingUtils.getString(buffer, "UNICODE"); 

  res = EncodingUtils.getString(buffer,"BIG5"); 

  //bbi.txt的编码类型选择合适的编码,如果不调整会乱码

  in.close();            

  }catch(Exception e){ 

     e.printStackTrace();         

  } 

myTextView.setText(res);//把得到的内容显示在TextView

 

二、      asset中获取文件并读取数据(资源文件只能读不能写)

String fileName ="yan.txt";//文件名字

String res=""; 

try{ 

  InputStream in = getResources().getAssets().open(fileName);

  //\Test\assets\yan.txt这里有这样的文件存在

  intlength = in.available();         

byte[] buffer =newbyte[length];        

in.read(buffer);            

res = EncodingUtils.getString(buffer,"UTF-8");     

}catch(Exception e){ 

     e.printStackTrace();         

  }

 

三、      sdcard中去读文件,首先要把文件通过\android-sdk-windows\tools\adb.exe把本地计算机上的文件copysdcard上去,adb.exe push e:/Y.txt /sdcard/,不可以用adb.exe push e:\Y.txt\sdcard\同样:把仿真器上的文件copy到本地计算机上用:adb pull ./data/data/com.tt/files/Test.txt e:/

 

String fileName ="/sdcard/Y.txt";

//也可以用String fileName ="mnt/sdcard/Y.txt";

String res="";     

try{ 

FileInputStream fin =newFileInputStream(fileName);

//FileInputStream fin =openFileInput(fileName);  

//用这个就不行了,必须用FileInputStream

   intlength = fin.available(); 

   byte[] buffer =newbyte[length]; 

    fin.read(buffer);     

    res = EncodingUtils.getString(buffer,"UTF-8"); 

    fin.close();     

    }catch(Exception e){ 

         e.printStackTrace(); 

} 

myTextView.setText(res);

 

四、      写文件,一般写在\data\data\com.test\files\里面,打开DDMS查看file explorer是可以看到仿真器文件存放目录的结构的

  String fileName ="TEST.txt";

  String message ="FFFFFFF11111FFFFF";

writeFileData(fileName, message);

  

  publicvoidwriteFileData(String fileName,String message){ 

     try{ 

       FileOutputStream fout =openFileOutput(fileName,MODE_PRIVATE);

      byte[] bytes = message.getBytes(); 

       fout.write(bytes); 

        fout.close(); 

       } 

     catch(Exception e){ 

       e.printStackTrace(); 

      } 

  }    

 

五、      写,data/data/目录(相当AP工作目录)上的文件,openFileOutput

  //写文件在./data/data/com.tt/files/下面

  publicvoidwriteFileData(String fileName,String message){ 

     try{ 

       FileOutputStream fout =openFileOutput(fileName,MODE_PRIVATE);

      byte[] bytes = message.getBytes(); 

       fout.write(bytes); 

        fout.close(); 

       } 

     catch(Exception e){ 

       e.printStackTrace(); 

      } 

  }

//-------------------------------------------------------

//读文件在./data/data/com.tt/files/下面

  publicString readFileData(String fileName){ 

       String res=""; 

      try{ 

        FileInputStream fin = openFileInput(fileName); 

       intlength = fin.available(); 

       byte[] buffer =newbyte[length]; 

        fin.read(buffer);     

        res = EncodingUtils.getString(buffer,"UTF-8"); 

        fin.close();     

       } 

      catch(Exception e){ 

        e.printStackTrace(); 

       } 

      returnres; 

   }   

六、      写,sdcard目录上的文件,要用FileOutputStream不能用openFileOutput

 

    //写在/mnt/sdcard/目录下面的文件

  publicvoidwriteFileSdcard(String fileName,String message){ 

     try{ 

      //FileOutputStreamfout = openFileOutput(fileName, MODE_PRIVATE);

      FileOutputStream fout =newFileOutputStream(fileName);

      byte[] bytes = message.getBytes(); 

       fout.write(bytes); 

        fout.close(); 

       } 

     catch(Exception e){ 

       e.printStackTrace(); 

      } 

  }

  

  //读在/mnt/sdcard/目录下面的文件

  publicString readFileSdcard(String fileName){

       String res=""; 

      try{ 

        FileInputStream fin =new FileInputStream(fileName); 

       intlength = fin.available(); 

       byte[] buffer =newbyte[length]; 

        fin.read(buffer);     

        res = EncodingUtils.getString(buffer,"UTF-8"); 

        fin.close();     

       } 

      catch(Exception e){ 

        e.printStackTrace(); 

       } 

      returnres; 

  }

 

注: openFileOutput是在raw里编译过的,FileOutputStream是任何文件都可以

=================================================================================

TextView android:id="@+id/textView1" android:scrollbars="vertical"     android:singleLine="false"    android:layout_width="match_parent" android:layout_height="match_parent"></TextView>


当然我们为了让TextView动起来,还需要用到TextView的setMovementMethod方法设置一个滚动实例,代码如下

TextView tv = (TextView)findViewById(R.id.tvCWJ); 
tv.setMovementMethod(ScrollingMovementMethod.getInstance()); // Android开发网提示相关的可以查看SDK中android.text.method分支了解更多





原创粉丝点击