您的位置:首页 > 其它

IO操作

2015-08-26 18:04 330 查看

IO操作

字符流:
Reader--FileReader(InputStreamReader)--BufferedReader--LineNumberReader
Writer--FileWriter(OutputStreamWriter)--BufferedWriter

字节流:
InputStream--FileInputStream--BufferedInputStream
OutputStream--FileOutputStream--BufferedOutputStream

----------------------------------------

转换流:
InputStreamReader
字节流-->字符流
用于將字节流转成字符流,是Reader的子类

OutputStreamWriter
字符流-->字节流
是字符流通向字节流的桥梁,是Writer的子类

需要加入指定编码表utf-8。而指定的编码表只有转换流可以指定。
OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("d.txt"),"UTF-8");


手机文本文件的复制

//------------------------------------
// 文件的创建
//------------------------------------
File phoneDir;
String state = Environment.getExternalStorageState();
if (Environment.MEDIA_MOUNTED.equals(state)) {
phoneDir = Environment.getExternalStorageDirectory();
} else {
phoneDir = this.getFilesDir();
}
File dir = new File(phoneDir + File.separator + "IODemo");
dir.mkdirs();

File file1 = new File(dir, "demo001.txt");
File file2 = new File(dir, "demo002.txt");
try {
file1.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}

//------------------------------------
// 文件的复制
//------------------------------------
FileReader fr = null;
FileWriter fw = null;
try {
fr = new FileReader(file1.toString());// 字符输入流
fw = new FileWriter(file2.toString());// 字符输出流

char[] buf = new char[1024];
int len = 0;

while ((len = fr.read(buf)) != -1) {
fw.write(buf, 0, len);
}
} catch (Exception e) {
e.printStackTrace();
}finally{
if(fr!=null){
try {
fr.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if(fw!=null){
try {
fw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}


把Assets目录下的文件拷贝到手机内存中

/**
* 把Assets目录下的文件拷贝到手机内存中
*/
public void copyAssetFile(String copyFileName) {
// ------------------------------------
// 获取手机存储目录
// ------------------------------------
File phoneDir;
String state = Environment.getExternalStorageState();
if (Environment.MEDIA_MOUNTED.equals(state)) {
phoneDir = Environment.getExternalStorageDirectory();
} else {
phoneDir = this.getFilesDir();
}

// ------------------------------------
// 判断文件是否存在
// ------------------------------------
File outFile = new File(phoneDir, copyFileName);
if (outFile.exists()) {
return;
}

// ------------------------------------
// 文件的复制
// ------------------------------------
FileOutputStream out = null;
InputStream in = null;
try {
out = new FileOutputStream(outFile);// 字节输出流
in = this.getAssets().open(copyFileName);// 字节输入流

int len = 0;
byte[] buffer = new byte[1024];

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

} catch (Exception e) {
e.printStackTrace();
} finally {
if (out != null) {
try {
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (in != null) {
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}


把Assets目录下mp3复制到SD卡

public class MainActivity extends Activity {

private File outFile;

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

//------------------------------------
// 准备文件
//------------------------------------
File phoneDir;
String state = Environment.getExternalStorageState();
if (Environment.MEDIA_MOUNTED.equals(state)) {
phoneDir = Environment.getExternalStorageDirectory();
} else {
phoneDir = this.getFilesDir();
}
outFile = new File(phoneDir, "do.mp3");

//------------------------------------
// 开始复制
//------------------------------------
long start = System.currentTimeMillis();
copyFile(outFile);
long end = System.currentTimeMillis();
Log.d("ziru", "end-start=" + (end - start));

}

public void copyFile(File outFile) {
try {
BufferedOutputStream bufos = new BufferedOutputStream(
new FileOutputStream(outFile));// 字节输出流
BufferedInputStream bufis = new BufferedInputStream(getResources()
.getAssets().open("do.mp3"));// 字节输入流

int buffer = 0;
while ((buffer = bufis.read()) != -1) {
bufos.write(buffer);
}

bufos.close();
bufis.close();
} catch (Exception e) {
e.printStackTrace();
}
}

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