如何操作Java的IO?
/** FileEditor.java
*
* Created on 2006年9月13日, 下午2:22
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/
/**
*这是第一个类,没有利用缓冲技术
*/
package fileeditor;
import java.io.*;
/**
*
* @author Administrator
*/
public class FileEditor {
/** Creates a new instance of FileEditor */
public FileEditor() {
}
/*用于创建文件;
*/
public static void createFile(String fileName) throws IOException{
String file=fileName;
FileWriter f=new FileWriter(file);
f.close();
}
/*用于更新文件内容;
*/
public static void updateFileContent(String fileName, byte[] content) throws IOException{
ByteArrayOutputStream f=new ByteArrayOutputStream();
byte[] buf=content;
f.write(buf);
OutputStream out=new FileOutputStream(fileName);
f.writeTo(out);
f.close();
out.close();
}
/*用于获取文件内容(返回比特流(字节)数组)
*/
public static byte[] getFileContent(String fileName) throws IOException {
int size;
File f=new File(fileName);
FileInputStream in = null;
in = new FileInputStream(f);
size=in.available();
byte[] content =new byte[size];
in.read(content,0,size);
in.close();
return content;
}
/*用于删除文件;
*/
public static void deleteFile(String fileName) throws IOException{
String file=fileName;
File f=new File(fileName);
f.delete();
}
}
/**
*这里是第二个类,用了缓冲技术
*/
/*用于更新文件内容;
*/
public static void updateFileContent(String fileName, byte[] content) throws IOException{
byte[] buf=content;
BufferedOutputStream out=new BufferedOutputStream(new FileOutputStream(fileName));
out.write(content);
out.close();
}
/*用于创建文件;
*/
public static void createFile(String fileName)throws IOException{
String file=fileName;
FileWriter f=new FileWriter(file);
f.close();
}
/*用于获取文件内容
*/
public static byte[] getFileContent(String fileName) throws IOException {
File f=new File(fileName);
BufferedInputStream in = new BufferedInputStream(new FileInputStream(f));
byte[] content =null;
in.read(content);
in.close();
return content;
}
/*用于删除文件;
*/
public static void deleteFile(String fileName) throws IOException{
String file=fileName;
File f=new File(fileName);
f.delete();
}
/**
*这是主函数
*/
public static void main(String[] args) {
byte[] content = null;
// BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
String fromFile = null;
String toFile=null;
try {
fromFile="g://asd.jpg";
content=FileEditor.getFileContent(fromFile);
for (int i=0;i<1000;i++){
toFile="g://test//";
toFile+=i;
toFile=".jpg";
FileEditor.createFile(toFile);//创建目标文件;
FileEditor.updateFileContent(toFile,content);
}
} catch (IOException ex) {
ex.printStackTrace();
}
}
在这次试验中,我想对比用缓冲流和不用缓冲流读写文件的效率,同一个文件(150k)复制1000份,在我机器上,不用缓冲的是4秒,用了也是4秒,所以没比较出来。后来当我试图复制更大的文件(30M)时出现了错误。
提示 :Exception in thread "main" java.lang.OutOfMemoryError: Java heap space :
我调试了半天,也没弄懂,希望高手指教。其他的问题没什么,这个类完全可以适用与小于30M的任何情况下使用。
本文地址:http://www.45fan.com/a/luyou/67016.html