java 檔案與流的總結
一 java 讀寫檔案
Java的IO操作都是基於流進行操作的,為了提高讀寫效率一般需要進行緩衝。
簡單的樣本程式如下:
/**
* 讀出file1中的內容,寫入file2中
*
*/
BufferedReader reader=new BufferedReader(new FileReader(file1));
BufferedWriter writer=new BufferedWriter(new FileWriter(file2));
String str=null;
str=reader.readLine();
while(str!=null)
{
writer.write(str+"/r/n");
str=reader.readLine();
}
reader.close();
writer.close();
完整的樣本:
import java.io.*;
public class FileReading {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("input the direction's path:");
BufferedReader reader=new BufferedReader(new InputStreamReader(System.in));
try
{
String path=reader.readLine();
String fileName;
makeDir(path);
System.out.println("input the filename:");
fileName=reader.readLine();
File file=makeFile(path,fileName);
writeFile(file);
System.out.println("input the file name or the direction:");
BufferedReader buff=new BufferedReader(new InputStreamReader(System.in));
File f=new File(buff.readLine().toString());
listFile(f);
}
catch(Exception ex)
{
System.err.println(ex.getMessage());
}
}
public static void makeDir(String path)//建立目錄,---檔案夾
{
try
{
File file=new File(path);
if(!file.exists())
file.mkdir();
}
catch(Exception ex)
{
System.err.println(ex.getMessage());
}
}
public static File makeFile(String path,String fileName)//建立檔案
{
File f=new File(path,fileName);
try
{
if(!f.exists())
f.createNewFile();
}
catch(Exception ex)
{
System.err.println(ex.getMessage());
}
finally
{
return f;
}
}
public static void writeFile(File file)//將一個檔案中的內容寫入另一個檔案
{
try
{
if(!file.exists())
file.createNewFile();
else
{
System.out.println("input the file:");
BufferedReader buff=new BufferedReader(new InputStreamReader(System.in));
String pathname=buff.readLine();
File f=new File(pathname);
BufferedReader reader=new BufferedReader(new FileReader(f));
BufferedWriter writer=new BufferedWriter(new FileWriter(file));
String str=null;
str=reader.readLine();
while(str!=null)
{
writer.write(str+"/r/n");
str=reader.readLine();
}
reader.close();
writer.close();
}
}
catch(Exception ex)
{
System.err.println(ex.getMessage());
}
}
public static void listFile(File file)//列出所有目錄及檔案
{
File[] list= file.listFiles();
int filecout=0;
int dircout=0;
for(File f:list)
{
if(f.isDirectory())
{
System.out.println("this is direction "+(++dircout)+" :"+f.getName());
}
else if(f.isFile())
{
System.out.println("This is file:"+(++filecout)+" :"+f.getName());
}
}
}
}