Java IO分为字节流和字符流,JDK中类继承关系如下:
一般的文件存储主要用FileInputStream 、FileOutputStream、FileReader、FileWriter,下面一段代码表明了用法:
public class Main {
static String fileName = "D:\\dxd\\dxd\\dxd.txt" ;
public static void main(String[] args) {
createFileByByteStream() ;
readerFileByByteStream() ;
createFileByCharStream() ;
readerFileByCharStream() ;
}
public static void createFileByByteStream(){
try {
File file = new File(fileName) ;
if(!file.getParentFile().exists()){
file.getParentFile().mkdirs() ;
}
FileOutputStream fos = new FileOutputStream(file) ;
String data = "this is byte stream demo" ;
fos.write(data.getBytes("UTF-8")) ;
fos.flush() ;
fos.close() ;
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("\ncreate file ok");
}
public static void readerFileByByteStream(){
try {
FileInputStream fis = new FileInputStream(fileName) ;
/*此方法读大文件时容易导致内存溢出!慎用。
byte[] buffer = new byte[fis.available()] ;
fis.read(buffer) ;
System.out.println(new String(buffer));*/
StringBuilder sb = new StringBuilder() ;
byte[] buffer = new byte[1024] ;
int len = 0 ;
while((len = fis.read(buffer)) != -1){
sb.append(new String(buffer ,0 ,len)) ;
}
fis.close() ;
System.out.println(sb.toString());
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void createFileByCharStream(){
File file = new File(fileName) ;
if(!file.getParentFile().exists()){
file.getParentFile().mkdirs() ;
}
try {
FileWriter fw = new FileWriter(file) ;
String data = "this is a char stream demo" ;
fw.write(data) ;
fw.flush() ;
fw.close() ;
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("\ncreate file ok");
}
public static void readerFileByCharStream(){
try {
FileReader fr = new FileReader(fileName) ;
char[] buffer = new char[1024] ;
int len = 0 ;
StringBuilder sb = new StringBuilder() ;
while((len = fr.read(buffer)) != -1){
sb.append(new String(buffer ,0 ,len)) ;
}
fr.close() ;
System.out.println(sb.toString());
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}