文件的读取:
public static void ReadFile(File file){
try {
FileInputStream fis = new FileInputStream(file);
InputStreamReader isr = new InputStreamReader(fis, "UTF-8");
BufferedReader br = new BufferedReader(isr);
String str;
while((str=br.readLine())!=null){
System.out.println(str);
}
System.out.println("done");
br.close();
isr.close();
fis.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
文件的写入:
public static void ReadFile(File file){
try {
FileOutputStream fos = new FileOutputStream(file);
OutputStreamWriter osw = new OutputStreamWriter(fos,"GBK");
BufferedWriter bw = new BufferedWriter(osw);
bw.write("你是一头猪\n");
bw.write("一头大笨猪\n");
bw.close();
osw.close();
fos.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
注意文件编码问题
使用字节流读写文件:
public static void ReadFile(File file){
try {
FileInputStream fis = new FileInputStream(file);
FileOutputStream fos = new FileOutputStream(new File("123.txt"));
byte bt[] = new byte[50];
try {
int n =0;
while(n!=-1){
n = fis.read(bt);
if(n==-1) break;
String str = new String(bt, 0, n,"GBK" );
System.out.println(str);
fos.write(bt, 0, n);
}
} catch (IOException e) {
e.printStackTrace();
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
带缓冲区的字节流读写文件:
public static void ReadFile(File file){
try {
FileInputStream fis = new FileInputStream(file);
BufferedInputStream bis = new BufferedInputStream(fis,10000000);
FileOutputStream fos = new FileOutputStream(new File("new.mp4"));
BufferedOutputStream bos = new BufferedOutputStream(fos);
byte[] bt = new byte[1000000];
long before = System.currentTimeMillis();
while(bis.read(bt)!=-1){
fos.write(bt);
}
fos.close();
bis.close();
fis.close();
bos.close();
System.out.println(System.currentTimeMillis()-before+"ms");
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
字符流读取文件:
public static void ReadFile(File file){
try {
FileInputStream fis = new FileInputStream(file);
InputStreamReader isr = new InputStreamReader(fis);
char str[] = new char[100];
while(isr.read(str)!=-1){
System.out.println(str);
}
isr.close();
fis.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
带缓冲区的字符流读取文件:
public static void ReadFile(File file){
try {
FileInputStream fis = new FileInputStream(file);
InputStreamReader isr = new InputStreamReader(fis,"GBK");
BufferedReader br = new BufferedReader(isr);
while(br.readLine() != null){
System.out.println(br.readLine());
}
isr.close();
fis.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
面对纯文本的数据,使用FileReader+FileWriter
public static void ReadFile(File file){
FileReader fr = null;
try {
fr = new FileReader(file);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
BufferedReader br = new BufferedReader(fr);
String string;
try {
while((string=br.readLine())!=null){
System.out.println(string);
}
} catch (IOException e) {
e.printStackTrace();
}
}