您的位置:首页 > 其它

文件的读写操作和Internet中读取文件

2015-11-24 12:51 344 查看
package com.xiaoke.internetandfile;

import java.io.BufferedInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;

import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;

public class MainActivity extends Activity {

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

private byte[] readFile(String path,InputStream in) throws IOException {

//直接获取一个流
BufferedInputStream bis=new BufferedInputStream(in);
//从地址源获得流
FileInputStream fis=new FileInputStream(path);
//解析流里面的数据
ByteArrayOutputStream bao=new ByteArrayOutputStream();

byte[] buffer=new byte[2048];
int len;

while((len=fis.read(buffer))!=-1){
bao.write(buffer,0,len);
}

//		String s=bao.toString();
//		Log.d("读取的数据为", s);
byte[] data = bao.toByteArray();

bao.flush();
bao.close();
return data;
}

public boolean writeSDcard(String path, String name, String content)
throws IOException {
boolean tempBoolean = false;
// 创建文件夹
File mkPath = new File(path);
mkPath.mkdir();
// 创建文件
File fileName = new File(mkPath, name);
fileName.createNewFile();
FileOutputStream fos = new FileOutputStream(fileName);
// 写入内容
fos.write(content.getBytes());
fos.flush();
fos.close();

tempBoolean = true;
return tempBoolean;

}

// 获取原始数据
public byte[] loadInternet(String u) throws Exception {
// 给定网址获取URL对象
URL url = new URL(u);
// 获取HttpURLConnection对象
HttpURLConnection conn = (HttpURLConnection) url.openConnection();

conn.setConnectTimeout(30000);

conn.setDoInput(true);
// 设置相应时间
conn.setReadTimeout(30000);
// 允许连接
conn.connect();
// 通过HttpURLConnection对象获取输入字节流
InputStream is = conn.getInputStream();

// 获取Bitmap
// Bitmap b=BitmapFactory.decodeStream(is);
// 创建输入字符流
BufferedInputStream bis = new BufferedInputStream(is);
// 创建缓存输出字节流
ByteArrayOutputStream baos = new ByteArrayOutputStream();
// 设置获取数据大小的数组
final int BUFFER_SIZE = 2048;
final int EOF = -1;

int c;
byte[] buf = new byte[BUFFER_SIZE];
// 将读入的数据写入缓存字节流中
while (true) {
c = bis.read(buf);
if (c == EOF)
break;

baos.write(buf, 0, c);
}

conn.disconnect();
is.close();
// 字节数组获取数据
byte[] data = baos.toByteArray();
baos.flush();
// 返回数据
return data;
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: