常用IO操作

例子:写文件,在文件末尾追加文字并且指定输出文件内容字符编码为utf-8:
备注:只有字符流可以确定编码,因为字符编码是对应字符的,无法对字节流编码,所以我们得找到一个Writer的子类来指定输出字符的编码.
OutputStreamWriter osw=null;
FileOutputStream fos=null;
//文件末尾追加,构造方法第二个参数true来确定
fos = new FileOutputStream(file,true);
  //指定输出文件内容编码为utf-8,构造方法第二个参数true来确定
 OutputStreamWriter osw=new OutputStreamWriter(fos,"utf-8");


有的时候直接调用file.delete();时候,删除文件可能不成功!面对这种情况,首先确保file对象句柄的锁定是否释放,例如某输出流是否关闭。此外jkd1.5之后关闭流释放资源有一些延时,我们最好调用垃圾回收机制,去释放资源!

/*
	 * 删除文件
	 * @param file
	 * @return
	 */
	protected boolean delFile(File file){ 
		boolean result = false;    
	    int tryCount = 0;    
	    while(!result && tryCount++ <10){    
	     System.gc();    
	     result = file.delete();
	     LOG.info("删除文件:"+file.getAbsolutePath()+","+result);	 
	     }    
	    return result;    
   }



判断文件是否为空

/*
	 * 判断文件是否为空
	 * @param sendSMSfile
	 * @return
	 */
	protected boolean NotEmptyFile(File sendSMSfile) {
   		FileReader fr=null;
   		BufferedReader br=null;
   		try {
   			 fr=new FileReader(sendSMSfile);
   			 br=new BufferedReader(fr);
   			if(br.readLine()!=null)
   				return true;
   			
   		} catch (FileNotFoundException e) {
   			e.printStackTrace();
   		} catch (IOException e) {
   			e.printStackTrace();
   		}finally{
   			
   				try {
   					if(br!=null){
					br.close();
   					}
   					if(fr!=null){
   						fr.close();
   	   				 }
				} catch (IOException e) {
					e.printStackTrace();
				}
   			}
   		
   		return false;
   	}





文件末尾追加一行


/*
	 * 文件末尾添加结束标记 
	 * @param file
	 * @param mark
	 * @return
	 */
	protected void appendNewLine(File file,String content){
		FileWriter fw=null;
		try {
			 fw=new FileWriter(file.getPath(),true);
			 //fw.write("\n");
			 fw.write(content);
		} catch (IOException e) {
			e.printStackTrace();
		}finally{
			try{
			  if(fw!=null){
				  fw.close();
			  }
			}catch(IOException e){
				e.printStackTrace();
			}
		}
	}
	



读取文件最后一行
 /**
	  * 文件完整传输
	  * @param file
	  * @param charset
	  * @return
	  */
	 private String readLastLine(File file, String charset) {   
		  if (!file.exists() || file.isDirectory() || !file.canRead()) {   
		    return null;   
		  }   
		  RandomAccessFile raf = null;   
		  try {   
		    raf = new RandomAccessFile(file, "r");   
		    long len = raf.length();   
		    if (len == 0L) {   
		      return "";   
		    } else {   
		      long pos = len - 1;   
		      while (pos > 0) {   
		        pos--;   
		        raf.seek(pos);   
		        if (raf.readByte() == '\n') {   
		          break;   
		        }   
		      }   
		      if (pos == 0) {   
		        raf.seek(0);   
		      }   
		      byte[] bytes = new byte[(int) (len - pos)];   
		      raf.read(bytes);   
		      if (charset == null) {   
		        return new String(bytes);   
		      } else {   
		        return new String(bytes, charset);   
		      }   
		    }   
		  } catch (FileNotFoundException e) {   
		  } catch (IOException e) {
			e.printStackTrace();
		} finally {   
		    if (raf != null) {   
		      try {   
		        raf.close();   
		      } catch (Exception e2) {   
		      }   
		    }   
		  }   
		  return null;   
		} 



拷贝文件


package com.wlh.test;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class Test {
	
	static String srcDir="D:\\SOCKET\\server_fa";//全局
	static String descDir="D:\\SOCKET\\ABC";//全局
	public static void main(String[] args) throws IOException {
		
		//copyFile(srcDir,descDir);
		deleteDirectory(new File(srcDir));
	}
	
	
	
	
   /**
    * 拷贝目录
    * @param srcs
    * @param desc
    * @throws IOException
    */
	public static  void copyFile(String srcs,String desc) throws IOException{   
		File srcdir=new File(srcs);
		File descdir=new File(desc);
			if(!descdir.exists()){
				descdir.mkdirs();
			}
			File [] files=srcdir.listFiles();
			for (int i = 0; i < files.length; i++) {
				   if(files[i].isFile()){
				    FileInputStream in=new FileInputStream(files[i]);   
			        File file=new File(desc+File.separator+files[i].getName());   
			        if(!file.exists())   
			            file.createNewFile();   
			        FileOutputStream out=new FileOutputStream(file);   
			        int c;   
			        byte buffer[]=new byte[1024];   
			        while((c=in.read(buffer))!=-1){   
			            for(int k=0;k<c;k++)   
			                out.write(buffer[k]);           
			        } 
			        in.close();   
			        out.close();  
				   }else{
					   copyFile(files[i].getAbsolutePath(),descDir+files[i].getAbsolutePath().substring(srcDir.length()));
				   }
			}
	        	
		
         
    }  

[color=red][b]删除一个目录[/b][/color]
	
	 /**
	 * 递归删除一个目录以及下面的文件
	 */
	public static  boolean deleteDirectory(File path) {   
	    if( path.exists() ) {   
	      File[] files = path.listFiles();   
	      for(int i=0; i<files.length; i++) {   
	         if(files[i].isDirectory()) {   
	           deleteDirectory(files[i]);  
	         }   
	         else {   
	        	 //删除文件
	           files[i].delete();   
	         }   
	      }   
	    }   
	   //删除目录
	    boolean hasdelete=path.delete();
	    if(hasdelete){
	    	System.out.println("删除目录:"+path);
	    	
	    }
		return hasdelete;
	    
	    
	  }   

}



文件末尾追加文字
public class FileAppendTest {
	/**
	 * 利用FileoutStream构造方法的每二个参数实现内容的追加
	 * @param f 文件
	 * @param context 所要追加的内容
	 */
	public static void append01(File f,String context) throws Exception{
		BufferedWriter br = new BufferedWriter(new OutputStreamWriter
					(new FileOutputStream(f,true)));
			br.write(context);
			br.flush();		
			br.close();				
	}	
	/**
	 * 利用FileWriter构造方法中的第二个参数实现内容的追加
	 * @param f 文件
	 * @param context 内容
	 */
	public static void append02(File f,String context)throws Exception{
		FileWriter fw  = new FileWriter(f, true);
			fw.write(context);
			fw.flush();		
			fw.close();				
	}
	/**
	 * 利用RandomAccessFile的seek()方法,
	 * 将写文件指针移至文件末尾,实现内容的追加
	 * @param f  文件
	 * @param context 内容
	 */
	public static void append03(File f,String context)throws Exception{
		RandomAccessFile raf = new RandomAccessFile(f, "rw");
			raf.seek(raf.length());//将写文件指针移至文件末尾
			raf.writeBytes(context);		
			raf.close();	
	}
}

你可能感兴趣的:(java,C++,c,socket,F#)