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

版权声明:欢迎评论 https://blog.csdn.net/halaoda/article/details/78471761

首先,和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>  


阅读更多

没有更多推荐了,返回首页