给出几个Java I/O 操作的示例代码。
创建文件或目录
import java.io.File;
import java.io.IOException;
public class TestFileIO {
public static void main(String[] args) {
File dir = new File("dir1");
dir.mkdir(); //创建目录
File file = new File(dir,"file1"); //目录加文件名
File file2 = new File("dir1/file2"); //完整路径
try {
file.createNewFile(); //创建文件,若存在同名文件,不会覆盖
file2.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
}
删除文件
import java.io.File;
public class TestFileIO {
public static void main(String[] args) {
File file = new File("dir1/file2");
if (file.delete()){
System.out.println(file.getName() + " is deleted!");
}else {
System.out.println("File is not deleted!");
}
}
}
向文件逐行写入内容(覆盖写)
-
FileOutputStream
import java.io.*; public class TestFileIO { public static void main(String[] args) throws IOException { File fout = new File("dir1/file1"); FileOutputStream fos = new FileOutputStream(fout); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(fos)); for (int i = 0; i < 10; i++){ bw.write("something"); bw.newLine(); } bw.close(); } }
-
FileWriter
import java.io.*; public class TestFileIO { public static void main(String[] args) throws IOException { File fout = new File("dir1/file1"); FileWriter fw = new FileWriter(fout); for (int i = 0; i < 10; i++){ fw.write("something" + System.getProperty("line.separator")); } fw.close(); } }
-
PrintWriter
import java.io.*; public class TestFileIO { public static void main(String[] args) throws IOException { File fout = new File("dir1/file1"); PrintWriter pw = new PrintWriter(new FileWriter(fout)); for (int i = 0; i < 10; i++){ pw.println("something"); } pw.close(); } }
-
OutputStreamWriter
import java.io.*; public class TestFileIO { public static void main(String[] args) throws IOException { File fout = new File("dir1/file1"); FileOutputStream fos = new FileOutputStream(fout); OutputStreamWriter osw = new OutputStreamWriter(fos); for (int i = 0; i < 10; i++) { osw.write("something" + System.getProperty("line.separator")); } osw.close(); } }
注:
往文本文件里写内容用FileWriter即可,比较方便。但是如果要自己定义字符编号和byte-buffer大小的话就要用FileOutputStream。
PrintWriter跟FileWriter的主要区别是PrintWriter可以格式化输出。该类实现了PrintStream的所有print方法。
追加写
import java.io.*;
public class TestFileIO {
public static void main(String[] args) throws IOException {
File fout = new File("dir1/file1");
FileOutputStream fos = new FileOutputStream(fout,true); //跟覆盖写唯一的区别是这里加了个true参数。
OutputStreamWriter osw = new OutputStreamWriter(fos);
for (int i = 0; i < 10; i++) {
osw.write("something" + System.getProperty("line.separator"));
}
osw.close();
}
}
拷贝文件
import java.io.*;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
public class TestFileIO {
public static void main(String[] args) throws IOException {
Path sour = Paths.get("dir1/file1");
Path des = Paths.get("dir1/file2");
Files.copy(sour,des); //Files.copy(a,b)。
}
}
合并多个文件
读取多个文件的内容,写入一个文件。
import java.io.*;
/**
* Created by lbd on 2017/1/13.
*/
public class MergeFiles {
public static void main(String[] args) throws IOException {
String sourceFile1Path = "dir1/file1";
String sourceFile2Path = "dir1/file2";
String mergedFilePath = "dir1/mergedFile.txt";
File[] files = new File[2];
files[0] = new File(sourceFile1Path);
files[1] = new File(sourceFile2Path);
File mergedFile = new File(mergedFilePath);
mergeFiles(files,mergedFile);
}
public static void mergeFiles(File[] files,File mergedFile) throws IOException {
FileWriter fw = new FileWriter(mergedFile,true);
BufferedWriter bw = new BufferedWriter(fw);
for (File f : files){
System.out.println("merging: " + f.getName());
FileReader fr = new FileReader(f);
BufferedReader br = new BufferedReader(fr);
String aLine;
while ((aLine = br.readLine()) != null){
bw.write(aLine);
bw.newLine();
}
br.close();
}
bw.close();
}
}
移动文件
调用的是File.renameTo()方法。
import java.io.*;
public class MoveFile {
public static void main(String[] args) throws IOException {
File f1 = new File("dir1/file1");
File f2 = new File("dir1/dir2/file3"); //dir2目录必须存在,否则无法移动成功
f1.renameTo(f2);
}
}
对文件内容排序
file1内容如下:
dog
cat
--windows
--kankan
pps
game
--annot be guaranteed
as it is, generally speaking,
--impossible to make any hard gu
arantees in the p
--resence of unsynchr
对行进行排序,以上面的文本为例,排序后arantees in the p
应该在第一行
import java.io.*;
import java.util.ArrayList;
import java.util.Collections;
/**
* Created by lbd on 2017/1/13.
*/
public class TestJavaIO {
public static void main(String[] args) throws IOException {
File fin = new File("file1");
File fout = new File("file2");
String s;
FileWriter fw = new FileWriter(fout);
FileReader fr = new FileReader(fin);
BufferedReader br = new BufferedReader(fr);
BufferedWriter bw = new BufferedWriter(fw);
ArrayList al = new ArrayList<>();
while ((s = br.readLine()) != null ){
if (!s.trim().startsWith("-") && s.trim().length() > 0){
al.add(s);
}
}
Collections.sort(al);
for (String line : al){
bw.write(line);
bw.newLine();
bw.write("------------------------------");
bw.newLine();
}
br.close();
bw.close();
}
}
file2内容如下:
arantees in the p
------------------------------
as it is, generally speaking,
------------------------------
cat
------------------------------
dog
------------------------------
game
------------------------------
pps
------------------------------

扫一扫关注公众号:FullStackPlan获取更多干货哦~