package com.sinosoft.io;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.InputStreamReader;
import java.net.URL;
import java.util.Date;
public class IOTest {
/*
* 复制文件
* @param srcPath 原文件路径
* @param destPath 目的文件
* */
public static void copyForFile(String srcPath,String descPath){
BufferedInputStream bis = null;
BufferedOutputStream bos = null;
try{
bis = new BufferedInputStream(new FileInputStream(srcPath));
bos = new BufferedOutputStream(new FileOutputStream(descPath));
byte[] b = new byte[1024];
int size = -1;
//循环读
while((size = bis.read(b))!= -1){
bos.write(b, 0, size);
}
}catch(Exception e){
e.printStackTrace();
}finally{
try{
if(bis != null){bis.close();}
if(bos != null){bos.close();}
}catch(Exception e){
e.printStackTrace();
}
}
}
/*
* 读文件
* @param srcPath 原文件路径
* */
public static void readerForFile(String srcFile){
BufferedReader br = null;
try{
br = new BufferedReader(new InputStreamReader(new FileInputStream(srcFile),"GBK"));
//一行一行的读
String line;
while((line = br.readLine())!= null){
System.out.println(line);
}
}catch(Exception e){
e.printStackTrace();
}finally{
try{
if(br!=null){br.close();}
}catch(Exception e){
e.printStackTrace();
}
}
}
/*
* 读取URL
* @param urlStr url,需加http://
* */
public static void readerForURLToFile(String urlStr){
BufferedReader br = null;
StringBuffer sb = null;
try{
URL url = new URL(urlStr);
br = new BufferedReader(new InputStreamReader(url.openStream(),"GBK"));
sb = new StringBuffer();
String str = null;
while((str=br.readLine())!=null){
sb.append(str).append("\r\n");
}
System.out.println(sb);
}catch(Exception e){
e.printStackTrace();
}finally{
try{
if(br!=null){br.close();}
}catch(Exception e){
e.printStackTrace();
}
}
}
/*
* 写文件 追加模式
* @param srcFile 原文件
* */
public static void writerForFileAddModel(String srcFile){
FileWriter fw = null;
try{
fw = new FileWriter(srcFile,true);
fw.write("\r\n");
fw.write("java IO应用");
}catch(Exception e){
e.printStackTrace();
}finally{
try{
if(fw!=null){fw.close();}
}catch(Exception e){
e.printStackTrace();
}
}
}
/*
* 获取所有文件夹下所有的文件名字
* @param listFile 文件
* */
public static void getAllFileNameForFolder(String listFile){
File file = new File(listFile);
System.out.println("是目录吗?"+file.isDirectory());
System.out.println("是文件吗?"+file.isFile());
System.out.println("最后修改时间:"+new Date(file.lastModified()));
System.out.println("路径:"+file.getPath());
System.out.println("文件路径:"+file.getAbsolutePath());
System.out.println("文件大小:"+file.length()+"字节");
System.out.println("是否可写:"+file.canWrite());
File[] array = file.listFiles();
for(int i=0;i<array.length;i++){
if(array[i].isFile()){
System.out.println("文件名:"+array[i].getName()+
"文件路径:"+array[i].getParent()+
"文件全路径:"+array[i].getPath());
}
}
}
/*
* 根据名字删除文件
* @param fileName 文件名路径
* */
public static boolean deleteForFileName(String fileDir){
boolean flag = false;
File file = new File(fileDir);
if(file.isFile() && file.exists()){
file.delete();
flag = true;
}
return flag;
}
/**
* 重命名文件
* @param newFileName 文件名
*/
public static void renameForFileName(String newFileName){
File afile = new File(newFileName);
File bfile = new File("c:/1.txt");
afile.renameTo(bfile);
}
/**
* 删除文件夹,包括子文件夹,文件.包括隐藏文件
* @param fileDir 文件夹路径
*/
public static void deleteForALLFile(File fileDir){
if(fileDir.exists()){ //是否存在
if(fileDir.isDirectory()){//是否是目录
File files[] = fileDir.listFiles();
for(int i=0;i<files.length;i++){
deleteForALLFile(files[i]);
}
}else{
fileDir.delete();
}
}else{
System.out.println("不存在目录:"+fileDir.getPath());
}
}
/**
* 根据后缀名删除文件
* @param file 文件名
*/
public static void deleteForFileSuffix(String fileDir){
// 删除单一文件
String aFile = fileDir;
//根据字符返回最后一处出现的索引
int suffixSymbol = aFile.lastIndexOf(".");
String suffix =aFile.substring(suffixSymbol+1);
System.out.println(suffix);
File file = new File(aFile);
if(suffix.equalsIgnoreCase("txt")){
file.delete();
}
}
/**
* 计算文件个数
* @param fileDir 文件
*/
public static void numForFile(String fileDir){
File file = new File(fileDir);
File []arrayFile =file.listFiles();
System.out.println(arrayFile.length);
}
public static void main(String[] args) {
copyForFile("F:\\密码.txt","F:\\密码1.txt");
readerForFile("F:\\密码.txt");
readerForURLToFile("http://www.baidu.com");
writerForFileAddModel("F:\\密码.txt");
getAllFileNameForFolder("F:\\");
renameForFileName("F:\\密码.txt");
File file= new File("F:\\");
deleteForALLFile(file);
deleteForFileSuffix(".txt");
numForFile("F:\\");
}
}