【轉載】Java IO基礎總結
阿新 • • 發佈:2018-12-14
stream name lse rect block 文件操作 讀數 pla ex18
Java中使用IO(輸入輸出)來讀取和寫入,讀寫設備上的數據、硬盤文件、內存、鍵盤......,根據數據的走向可分為輸入流和輸出流,這個走向是以內存為基準的,即往內存中讀數據是輸入流,從內存中往外寫是輸出流。
根據處理的數據類型可分為字節流和字符流
1.字節流可以處理所有數據類型的數據,在java中以Stream結尾
2.字符流處理文本數據,在java中以Reader和Writer結尾。
我們來看個IO流的詳解圖:
IO流的本質是對字節和字符的處理,那麽我們平時也是用來處理文件的,就從文件處理開始接觸這方面的知識。
1.文件操作(創建文件和文件夾,查看文件)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
//創建一個文件路徑
File file = new File( "D:\\testData.txt" );
if (file.exists()){
//得到文件路徑
System.out.println(file.getAbsolutePath());
//得到文件大小
System.out.println( "文件大小:" +file.length());
}
//創建文件和創建文件夾 File file1 = new File( "d:\\iotest.txt" );
if (!file1.exists())
{
try {
file1.createNewFile();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} else {
System.out.println( "文件已存在" );
}
//創建文件夾
File file2 = new File( "d:\\testIO" );
if (file2.isDirectory()) {
System.out.println( "文件夾存在" );
} else {
file2.mkdir();
}
//列出一個文件夾下的所有文件
File f = new File( "d:\\testIO" );
if (f.isDirectory())
{
File lists[] = f.listFiles();
for ( int i= 0 ;i<lists.length;i++)
{
System.out.println(lists[i].getName());
}
}
|
常用字節流FileInputStream和FileOutputStream:
FileInputStream:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
FileInputStream fis = null ;
try {
fis = new FileInputStream( "D:\\testData.txt" );
byte bytes[]= new byte [ 1024 ];
int n= 0 ;
while ((n=fis.read(bytes))!= - 1 ){
String str = new String(bytes, 0 ,n);
System.out.print(str);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
|
查看輸出:
FileOutputStream:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
FileOutputStream fos = null ;
try {
fos = new FileOutputStream( "D:\\testData.txt" );
String str = "報效國家,舍生忘死" ;
byte bytes[] = str.getBytes();
fos.write(bytes);
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
fos.close();
} catch (Exception e2) {
e2.printStackTrace();
}
}
|
查看一下:
如果是續寫文件,則可以加上參數:
字符流FileReader和FileWriter:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
//字符流
//文件寫出 輸入流
FileReader freader = null ;
//寫入到文件 輸出流
FileWriter fwriter = null ;
try {
//創建輸入對象
freader = new FileReader( "d:\\testData.txt" );
//創建輸出對象
File f1 = new File( "e:\\testData.txt" );
if (!f1.exists()){
f1.createNewFile();
}
fwriter = new FileWriter(f1);
//讀入到內存
char chars[] = new char [ 1024 ];
int n= 0 ;
while ((n=freader.read(chars))!= - 1 )
{
fwriter.write(chars);
//System.out.println(chars);
}
} catch (Exception e) {
e.printStackTrace();
// TODO: handle exception
} finally {
try {
freader.close();
fwriter.close();
} catch (Exception e){
e.printStackTrace();
}
}
//緩沖字符流 bufferedReader bufferedWriter
BufferedReader bfreader = null ;
try {
FileReader freader = new FileReader( "d:\\testData.txt" );
bfreader = new BufferedReader(freader);
//循環讀取
String s = "" ;
while ((s=bfreader.readLine())!= null )
{
System.out.println(s);
}
} catch (Exception e) {
// TODO: handle exception
}
|
【轉載】Java IO基礎總結