android studio 读取assets文件夹下的文件

来源:互联网 发布:卫视直播软件哪个好 编辑:程序博客网 时间:2024/05/22 03:47

首先,和eclipse不同的是assets文件夹的位置,在eclipse中,assets文件夹是在res文件夹下


Paste_Image.png


在android studio中有所不同


Paste_Image.png

Paste_Image.png


如果也和eclipse一样放在res文件夹下读取会报异常。

读取:

  InputStream inputStream = null;  try {              inputStream = getAssets().open("test.txt");              int size = inputStream.available();               int len = -1;               byte[] bytes = new byte[size];              inputStream.read(bytes);               inputStream.close();               String string = new String(bytes);               Log.d("aa", string);        } catch (IOException e) {                e.printStackTrace();        }
public class MainActivity extends AppCompatActivity{    private RecyclerView mRecyclerView;    private List<User> mDatas;    private HomeAdapter mAdapter;    TextView tv;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        /*下面做的是读取assets文件夹下的文件*/        mRecyclerView = (RecyclerView) findViewById(R.id.recycler);        mDatas=new ArrayList<>();        tv = (TextView) findViewById(R.id.tv);        mRecyclerView.setLayoutManager(new LinearLayoutManager(this));        try {            InputStreamReader isr = new InputStreamReader(getAssets().open("res.json"),"UTF-8");            BufferedReader br = new BufferedReader(isr);            String line;            StringBuilder builder = new StringBuilder();            while((line = br.readLine()) != null){                builder.append(line);            }            br.close();            isr.close();            JSONObject testjson = new JSONObject(builder.toString());//builder读取了JSON中的数据。            JSONArray array = testjson.getJSONArray("data");         //从JSONObject中取出数组对象            for (int i = 0; i < array.length(); i++) {                JSONObject role = array.getJSONObject(i);    //取出数组中的对象                String news_summary = role.getString("news_summary");                mDatas.add(new User(news_summary));                /*tv.append(role.getString("news_summary") + "\n ");*/            }            mRecyclerView.setAdapter(mAdapter = new HomeAdapter(MainActivity.this,mDatas));        } catch (Exception e) {            e.printStackTrace();        }    }
这个是recyclerview的适配器
public class HomeAdapter extends RecyclerView.Adapter<HomeAdapter.MyViewHolder> {        Context context;        List<User> dataBeen;    public HomeAdapter(Context context, List<User> dataBeen) {        this.context = context;        this.dataBeen = dataBeen;    }    @Override        public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType)        {            MyViewHolder holder = new MyViewHolder(LayoutInflater.from(context).inflate(R.layout.item_home, parent, false));            return holder;        }        @Override        public void onBindViewHolder(MyViewHolder holder, int position)        {            holder.tv.setText(dataBeen.get(position).getNews_summary());        }        @Override        public int getItemCount()        {            return dataBeen.size();        }        class MyViewHolder extends RecyclerView.ViewHolder {            TextView tv;            public MyViewHolder(View view)            {                super(view);                tv = (TextView) view.findViewById(R.id.text);            }        }}

//构造文件File类

File f=new File(fileName);

//判断是否为目录

f.isDirectory();

//获取目录下的文件名

String[] fileName=f.list();

//获取目录下的文件
File[] files=f.listFiles();


1、Java怎么读取文件

[java] view plain copy
  1. package com.yyb.file;  
  2.   
  3. import java.io.File;  
  4. import java.io.FileInputStream;  
  5. import java.io.InputStream;  
  6.   
  7. /* 
  8.  * 读取文件: 
  9.  * 1、找到指定的文件 
  10.  * 2、根据文件创建文件的输入流 
  11.  * 3、创建字节数组 
  12.  * 4、读取内容,放到字节数组里面 
  13.  * 5、关闭输入流 
  14.  */  
  15. public class FileRead {  
  16.   
  17.     public static void main(String[] args) {  
  18.         // 构建指定文件  
  19.         File file = new File("E:" + File.separator + "hello.txt");  
  20.         InputStream in = ;  
  21.         try {  
  22.             // 根据文件创建文件的输入流  
  23.             in = new FileInputStream(file);  
  24.             // 创建字节数组  
  25.             byte[] data = new byte[1024];  
  26.             // 读取内容,放到字节数组里面  
  27.             in.read(data);  
  28.             System.out.println(new String(data));  
  29.         } catch (Exception e) {  
  30.             e.printStackTrace();  
  31.         } finally {  
  32.             try {  
  33.                 // 关闭输入流  
  34.                 in.close();  
  35.             } catch (Exception e) {  
  36.                 e.printStackTrace();  
  37.             }  
  38.         }  
  39.     }  
  40.   
  41. }  


2、Java怎么写入文件

[java] view plain copy
  1. package com.yyb.file;  
  2.   
  3. import java.io.File;  
  4. import java.io.FileOutputStream;  
  5. import java.io.OutputStream;  
  6.   
  7. /* 
  8.  * 写入文件: 
  9.  * 1、找到指定的文件 
  10.  * 2、根据文件创建文件的输出流 
  11.  * 3、把内容转换成字节数组 
  12.  * 4、向文件写入内容 
  13.  * 5、关闭输入流 
  14.  */  
  15. public class FileWriter {  
  16.   
  17.     public static void main(String[] args) {  
  18.         // 构建指定文件  
  19.         File file = new File("E:" + File.separator + "hello.txt");  
  20.         OutputStream out = ;  
  21.         try {  
  22.             // 根据文件创建文件的输出流  
  23.             out = new FileOutputStream(file);  
  24.             String message = "我是好人。";  
  25.             // 把内容转换成字节数组  
  26.             byte[] data = message.getBytes();  
  27.             // 向文件写入内容  
  28.             out.write(data);  
  29.         } catch (Exception e) {  
  30.             e.printStackTrace();  
  31.         } finally {  
  32.             try {  
  33.                 // 关闭输出流  
  34.                 out.close();  
  35.             } catch (Exception e) {  
  36.                 e.printStackTrace();  
  37.             }  
  38.         }  
  39.     }  
  40.   
  41. }  



3、Java怎么复制文件

[java] view plain copy
  1. <span style="font-size:18px;">package com.yyb.file;  
  2.   
  3. import java.io.File;  
  4. import java.io.FileInputStream;  
  5. import java.io.FileOutputStream;  
  6. import java.io.InputStream;  
  7. import java.io.OutputStream;  
  8. /* 
  9.  * 实现思路: 
  10.  * 1、构建源文件与目标文件 
  11.  * 2、源文件创建输入流,目标文件创建输出流 
  12.  * 3、创建字节数组 
  13.  * 4、使用循环,源文件读取一部分内容,目标文件写入一部分内容,直到写完所有内容 
  14.  * 5、关闭源文件输入流,目标文件输出流 
  15.  */  
  16. public class FileCopy {  
  17.   
  18.     public static void main(String[] args) {  
  19.         // 构建源文件  
  20.         File file = new File("E:" + File.separator + "HelloWorld.txt");  
  21.         // 构建目标文件  
  22.         File fileCopy = new File("D:" + File.separator + "HelloWorld");  
  23.         InputStream in = ;  
  24.         OutputStream out = ;  
  25.         try {  
  26.             // 目标文件不存在就创建  
  27.             if (!(fileCopy.exists())) {  
  28.                 fileCopy.createNewFile();  
  29.             }  
  30.             // 源文件创建输入流  
  31.             in = new FileInputStream(file);  
  32.             // 目标文件创建输出流  
  33.             out = new FileOutputStream(fileCopy, true);  
  34.             // 创建字节数组  
  35.             byte[] temp = new byte[1024];  
  36.             int length = 0;  
  37.             // 源文件读取一部分内容  
  38.             while ((length = in.read(temp)) != -1) {  
  39.                 // 目标文件写入一部分内容  
  40.                 out.write(temp, 0, length);  
  41.             }  
  42.         } catch (Exception e) {  
  43.             e.printStackTrace();  
  44.         } finally {  
  45.             try {  
  46.                 // 关闭文件输入输出流  
  47.                 in.close();  
  48.                 out.close();  
  49.             } catch (Exception e) {  
  50.                 e.printStackTrace();  
  51.             }  
  52.         }  
  53.     }  
  54.   
  55. }</span><span style="font-size: 24px;">  
  56. </span>  


原创粉丝点击