1.问题需求
实际项目中,有很多情况需要将文件中的内容一次性读取进内存,进行一些业务的处理,这里给一个简单的案例
import java.io.File;
import java.io.FileWriter;
import java.io.Writer;
import java.io.IOException;
import java.io.FileInputStream;
public class Deletekey {
public static String readFile(File file) throws IOException {
if (file != null && file.canRead()){
byte[] bytes = new byte[(int) file.length()];
FileInputStream fileInputStream = new FileInputStream(file);
fileInputStream.read(bytes);
String content = new String(bytes,"UTF-8");
fileInputStream.close();
return content;
}
return "";
}
public static void saveFile(StringBuilder string,File file)throws IOException{
Writer writer = new FileWriter(file);
writer.write(string.toString());
writer.close();
}
public static void main(String[] args) throws IOException {
File file = new File(System.getProperty("user.dir")+ "\\paper.txt");
StringBuilder OrignText = new StringBuilder(readFile(file));
System.out.println(OrignText);
File fileout = new File("NoKeyPaper.txt");
saveFile(OrignText,fileout);
}
}
下面是我参考的两份代码,来自https://blog.csdn.net/testcs_dn/article/details/41982939
import java.io.*;
/**
* @Author :feiyang
* @Date :Created 2019/5/15
*/
public class ReadFileUtil {
public String acceptFile(String filePath) throws IOException {
File file = new File(filePath);
byte[] bytes = new byte[(int) file.length()];
FileInputStream fileInputStream = new FileInputStream(filePath);
int ret = fileInputStream.read(bytes);
String content = new String(bytes, 0, ret);
return content;
}
}
public class IOHelper {
public static void copy(Reader in,Writer out) throws IOException {
int c = -1;
while((c = in.read()) != -1) {
out.write(c);
}
}
public static String readFile(File file) throws IOException {
if (file != null && file.canRead()){
Reader in = new FileReader(file);
StringWriter out = new StringWriter();
copy(in,out);
return out.toString();
}
return "";
}
public static void saveFile(File file,String content) throws IOException {
Writer writer = new FileWriter(file);
writer.write(content);
writer.close();
}
}