Nothing

android读入sd卡

2024/07/29

sd卡的读写操作

HttpURLConnection

HttpURLConnection是基于[http协议的,支持GET、POST、PUT、DELETE等各种请求方式。如果使用HTTPS协议请求,可以使用它的子类HttpsURLConnection完成更安全的请求操作

使用步骤

  1. 创建一个URL对象:

    1
    URL url=new URL(“接口地址”)
  2. 调用URL对象的openConnection()来获取HttpURLConnection对象实例;

    1
    HttpURLConnection connection= (HttpURLConnection) url.openConnection();
  3. 设置HTTP请求使用的方法:GET、POST或其他请求;

    1
    connection.setRequestMethod(“GET”);
  4. 设置连接超时,读取超时的毫秒数,以及服务器希望得到的一些消息头;

    1
    2
    3
    connection.setConnectTimeout(6*1000);

    connection.setReadTimeout(6 * 1000);
    1
       
  5. 调用getInputStream()方法获得服务器返回的输入流,然后输入流进行读取了;

    InputStream in = connection.getInputStream();

  6. 最后调用disconnect()方法将HTTP连接关掉;

    connection.disconnect();

使用参数

setRequestProperty(key,value)【设置请求头】:设置一般请求属性。如果已存在具有该关键字的属性,则用新值改写其值。注:HTTP 要求所有能够合法拥有多个具有相同键的实例的请求属性,使用以逗号分隔的列表语法

addRequestProperty(key,value)【设置响应体】:添加由键值对指定的一般请求属性

getOutputStream【发送URL请求】:建立实际连接之后,就是发送请求,把请求参数传到服务器

使用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
public void testDoGet(){
String api="";
HttpURLConnection connection = null;
InputStream in=null;
BufferedReader reader=null;
try{
//构造一个URL对象
URL url = new URL(api);
//获取URLConnection对象
connection= (HttpURLConnection) url.openConnection();
in = connection.getInputStream();
reader = new BufferedReader(new InputStreamReader(in, StandardCharsets.UTF_8));
StringBuilder sb = new StringBuilder();
String line = null;
//按行读取
while ((line = reader.readLine()) != null) {
sb.append(line);
}
String response= sb.toString();
System.out.println(response);
}catch (Exception exception){
exception.printStackTrace();
}finally {
if (connection != null) {
connection.disconnect();
}
if (in != null) {
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (reader != null) {
try {
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}

AsyncTask异步操作

AsyncTask<Void, Void, Void> 参数:

  • 异步任务开始时 , execute() 方法传入的参数类型 , 也是 doInBackground() 方法传入的参数类型 ;
  • 异步任务执行时 , 进度值类型 , onProgressUpdate() 方法传入的参数类型 ;
  • 异步任务结束时 , 结果类型 , onPostExecute() 方法传入参数类型 , 或 onCancelled() 方法参数

使用步骤

自定义 AsyncTask 异步任务

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
package kim.hsl.aa;

import android.os.AsyncTask;
public class MyAsyncTask extends AsyncTask<String, Integer, Boolean> {

@Override
protected void onPreExecute() {
super.onPreExecute();
}

@Override
protected Boolean doInBackground(String... strings) {
return null;
}

@Override
protected void onProgressUpdate(Integer... values) {
// 在 doInBackground 中调用了 publishProgress 方法, 就会回调该方法
super.onProgressUpdate(values);

@Override
protected void onCancelled() {
super.onCancelled();
}

@Override
protected void onCancelled(Boolean aBoolean) {
super.onCancelled(aBoolean);
}
}

调用异步任务

1
2
3
4
5
6
7
8
9
10
11
12
13
public class MainActivity extends AppCompatActivity {
private MyAsyncTask mMyAsyncTask;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

// 创建并执行异步任务
mMyAsyncTask = new MyAsyncTask();
mMyAsyncTask.execute();
}
}

sd卡的读写

在SD卡目录下创建文件

1
2
3
4
5
6
7
8
File file = new File(Environment.getExternalStorageDirectory(), "mysdcard.txt");
Log.d(TAG, "file.exists():" + file.exists() + " file.getAbsolutePath():"+ file.getAbsolutePath());
if (file.exists()) {
file.delete();
file.createNewFile();
}
// Toast.makeText(MainActivity.this, "SD卡目录下创建文件成功...", Toast.LENGTH_LONG).show();
Log.d(TAG, "SD卡目录下创建文件成功...");

在SD卡目录下的文件,写入内容

1
2
3
4
5
FileWriter fw = new FileWriter(file);
fw.write("我的sdcard内容.....");
fw.close();
// Toast.makeText(MainActivity.this, "SD卡写入内容完成...",Toast.LENGTH_LONG).show();
Log.d(TAG, "SD卡写入内容完成...");

读取SD卡文件里面的内容

1
2
3
4
FileReader fr = new FileReader("/mnt/sdcard/mysdcard.txt");
BufferedReader r = new BufferedReader(fr);
String result = r.readLine();
Log.d(TAG, "SD卡文件里面的内容:" + result);
CATALOG
  1. 1. sd卡的读写操作
    1. 1.1. HttpURLConnection
      1. 1.1.1. 使用步骤
      2. 1.1.2. 使用参数
      3. 1.1.3. 使用
    2. 1.2. AsyncTask异步操作
      1. 1.2.1. 使用步骤
    3. 1.3. sd卡的读写