java IO操作
2015-09-07 21:40 himanxu 阅读(203) 评论(0) 编辑 收藏 举报java7中引入自动资源管理(ARM),使用try(){}catch{}finally{},()中的资源会在程序运行后自动释放。
文件流分为输入流和输出流,典型用法
FileReader fr = new FileReader("poem.txt"); //读取已有文件
FileWriter fw = new FileWriter("newPoem2.txt"); //向特定名文件写入(不存在先创建),覆盖
char[] cbuf = new char[32]; //Reader和Writer读写以字符为单位
int hasRead = 0; //返回一次读取数
while ((hasRead = fr.read(cbuf)) > 0)
{
fw.write(cbuf,0,hasRead);
}
FileInputStream fis = new FileInputStream("poem.txt");
FileOutputStream fos = new FileOutputStream("newPoem.txt"))
byte[] bbuf = new byte[32]; //InputStream和OutputStream读写以字节为单位
int hasRead = 0;
while ((hasRead = fis.read(bbuf)) > 0)
{
fos.write(bbuf,0,hasRead);
}
java建议称,处理流PrintWriter功能比较强大,建议将输出流包装成PrintStream后进行输出,类似的将Writer包装成PrintWriter
FileInputStream fis = new FileInputStream("poem.txt");
FileOutputStream fos = new FileOutputStream("test.txt");
PrintStream ps = new PrintStream(fos);
FileReader fr = new FileReader("poem.txt");
FileWriter fw = new FileWriter("text.java");
PrintWriter pw = new PrintWriter(fw)
char[] cbuf = new char[32];
byte[] bbuf = new byte[32];
int hasRead = 0;
while ((hasRead = fis.read(bbuf))>0)
{
ps.write(bbuf,0,hasRead);
}
while ((hasRead = fr.read(cbuf)) > 0)
{
pw.write(cbuf,0,hasRead);
}
PrintStream、PrintWriter、BufferedReader
PrintStream用于处理字节流,PrintWriter用于处理字符流
其中bufferedReader的readLine()方法在读取数据时,在该方法成功返回之前,线程将一直阻塞,考虑到这个原因,当要实现多个文件并发读取时,应为每个读取过程启动一个线程