字符流 和 字节流
FileReader fileReader = new FileReader(path1);
或者另一种构造方法
FileReader fileReader = new FileReader(new File(path1));
BufferedReader bufferedReader = new BufferedReader(fileReader); // 缓冲流
// 写文件
FileWriter fileWriter = new FileWriter(path2); // 这里的path2与path1不能相同,否则空文件readLine始终为null
BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);
String s = null;
while ((s = br.readLine()) != null) { //使用readLine方法,一次读一行
if(s.trim().equals(""));
else{
// bufferedWriter.write(s+"\n");
bufferedWriter.write(s);
bufferedWriter.newLine(); // 换行,与"\n"作用相同
bufferedWriter.flush();
}
System.out.println(s);
}
// 关闭缓冲流,否则文件无法删除
bufferedReader.close();
bufferedWriter.close();
BufferedReader bufReader = new BufferedReader(new InputStreamReader(new FileInputStream(new File(filePath))));//数据流读取文件
StringBuffer strBuffer = new StringBuffer();
String empty = "";
String tihuan = "";
List<String> arrList = new ArrayList<>();
for (String temp = null; (temp = bufReader.readLine()) != null; temp = null) {
if(temp.contains("\"PUBLIC\".")) {
temp = temp.replace("\"PUBLIC\"."," ");
}
if(temp.contains("\"")) {
temp = temp.replace("\"","'");
}
arrList.add(temp);
}
//删除22行之前的数据
arrList = arrList.subList(21,arrList.size());
for (String str : arrList){
strBuffer.append(str);
strBuffer.append(System.getProperty("line.separator"));//行与行之间的分割
}
bufReader.close();
PrintWriter printWriter = new PrintWriter(outPath);//替换后输出的文件位置
printWriter.write(strBuffer.toString().toCharArray());
printWriter.flush();
printWriter.close();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 通过二进制输入流转字节,一次性读取全部文件数据
* @param strFile
*/
public static void readFile(String strFile){
try{
InputStream is = new FileInputStream(strFile);
int iAvail = is.available();
byte[] bytes = new byte[iAvail];
is.read(bytes);
System.out.println("文件内容:\n" + new String(bytes));
is.close();
}catch(Exception e){
e.printStackTrace();
}
}
/**
* 字符流,按行读取文件
* @param strFile
*/
public static void readFileByLine(String strFile){
try {
File file = new File(strFile);
BufferedReader bufferedReader = new BufferedReader(new FileReader(file));
String strLine = null;
int lineCount = 1;
while(null != (strLine = bufferedReader.readLine())){
System.out.println("第[" + lineCount + "]行数据:[" + strLine + "]");
lineCount++;
}
}catch(Exception e){
e.printStackTrace();
}
}
/**
* 按行读取全部文件数据
*
* @param strFile
*/
public static StringBuffer readFileStream(String strFile) throws IOException {
StringBuffer strSb = new StringBuffer();
InputStreamReader inStrR = new InputStreamReader(new FileInputStream(strFile), "UTF-8");
// character streams
BufferedReader br = new BufferedReader(inStrR);
String line = br.readLine();
while (line != null) {
strSb.append(line).append("\r\n");
line = br.readLine();
}
System.out.println(strSb.toString());
return strSb;
}
/**
* 写入文件
* @param fileName
* @param s
* @throws IOException
*/
public static void writeToFile(String fileName,String s) throws IOException {
File f1 = new File(fileName);
OutputStream out = null;
BufferedWriter bw = null;
if (f1.exists()) {
out = new FileOutputStream(f1);
bw = new BufferedWriter(new OutputStreamWriter(out, "utf-8"));
bw.write(s);
bw.flush();
bw.close();
} else {
System.out.println("文件不存在");
}
}
/**
* 追加文件
*/
public static void writeToFileAppend(String fileName, String text) {
FileWriter fw = null;
try {
//如果文件存在,则追加内容;如果文件不存在,则创建文件
File f = new File(fileName);
fw = new FileWriter(f, true);
} catch (IOException e) {
e.printStackTrace();
}
PrintWriter pw = new PrintWriter(fw);
pw.println(text);
pw.flush();
try {
fw.flush();
pw.close();
fw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 读取所有子文件
* @param dirPath
* @param allFileList
*/
public static void getAllFile(File dirPath, List<File> allFileList) {
File[] fileList = dirPath.listFiles();
assert fileList != null;
for (File file : fileList) {
if (file.isDirectory()) {
getAllFile(file, allFileList);
} else {
allFileList.add(file);
}
}
}