import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Date;
/**
* @author 刘毅
* @date 2010-2-25
* @ClassName FileUtils.java
* @Email liu_yi126@163.com
* @param 文件操作
* @param
*/
public class FileUtils {
/**
* 复制文件,无乱码
* @param srcPath 原文件路径
* @param destPath 目的文件路径
*/
public static void copyForFile(String srcPath,String destPath){
BufferedInputStream br = null;
BufferedOutputStream bw = null;
try {
br =new BufferedInputStream(new FileInputStream(srcPath));
bw = new BufferedOutputStream(new FileOutputStream(destPath));
byte[] b = new byte[1024];
int size = -1;
//循环读
while ((size = br.read(b)) != -1) {
bw.write(b, 0, size);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally{
try {
if(br != null){
br.close();
}
if(bw != null){
bw.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
/**
* 读文件,无乱码
* @param srcFile 原文件
*/
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 (IOException e) {
e.printStackTrace();
} finally {
try {
if (br != null) {
br.close();
}
} catch (IOException 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 (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally{
try {
if(br != null){
br.close();
}
} catch (IOException 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("sjkd39840823094你好啊啊啊啊啊啊 ");
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally{
try {
if(fw != null){
fw.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
/**
* 写文件,无乱码,以数组形式写入
* @param srcFile 原文件
* @param arg0
*/
public static void writerForFile(String srcFile,String []arg0){
PrintWriter pw = null;
try {
pw = new PrintWriter(new FileWriter(srcFile));
for (int i = 0; i < arg0.length; i++) {
pw.write(arg0[i]);
pw.println();
}
} catch (IOException e) {
e.printStackTrace();
}finally{
if(pw != null){
pw.close();
}
}
}
/**
* 获取所有文件夹下所有文件名字
* @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 文件名路径
* @return
*/
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("c:\\你.txt","d:\\好.txt");
//readerForFile("c:\\你.txt");
writerForFileAddModel("c:\\你.txt");
/*
String str[] = new String[3];
str[0]="你=好";
str[1]="0=1";
str[2]="0=1";
writerForFile("c:\\你.txt",str);
*/
//deleteForFileName("src/test.properties");
//getALLFileNameForFolder("C:/Youku/db");
// File file= new File("c://1");
// deleteForALLFile(file);
//deleteForFileSuffix("F:/1");
//numForFile("F:/1");
//renameForFileName("c:/你.txt");
// readerForURLToFile("http://www.qq.com");
}
}
分享到:
相关推荐
提高Java IO操作的性能 虽然抱怨Java程序性能不佳的呼声由来已久,但实际上,如果开发者在整个开发周期内都能够关注性能问题,Java程序完全可以和C/C++程序一样快。本文分析了Java IO应用中一些常见的性能问题。
综上所述,Java IO培训讲义通过系统介绍Java IO的基本概念和模型,帮助应届生理解并掌握Java IO类库的使用,特别是在了解和应用不同IO模型时的注意事项和实践方法。通过这份讲义,初学者能更好地理解和编写涉及Java ...
Java IO(Input/Output)是Java编程语言中用于处理输入输出操作的基础框架,它提供了丰富的类库,使得程序能够与各种设备、文件、...理解和掌握Java IO与NIO的使用,对于提升Java应用程序的性能和可扩展性至关重要。
Java的IO(Input/Output)是Java编程中的一个重要领域,主要负责数据的输入与输出操作。在Java中,IO API提供了丰富的类和接口,使得开发者能够有效地读取、写入数据,无论是从文件、网络还是内存。下面我们将深入...
在“JavaIODemo”这个示例中,可能会包含以上提到的一些或全部Java IO操作的代码实例,通过这些实例,我们可以学习如何在实际项目中应用Java IO API。实践是掌握Java IO的最佳方式,通过对这些示例的分析和运行,...
本篇文章将全面解析Java IO处理类,包括基本概念、常用类库、流的概念及分类,以及实际编程中的应用。 首先,Java IO体系基于流(Stream)的概念,流是数据的序列,可以是从输入源读取或向输出目标写入。Java IO提供...
在Java IO系统中,装饰模式被广泛应用于构建灵活且可扩展的输入输出流体系。 1. Java IO体系结构: Java IO库基于流的概念,流是数据传输的抽象表示,分为字节流(处理单个字节的数据)和字符流(处理Unicode字符的...
在这个集合中,我们主要探讨的是Java IO在文件读写方面的实践应用。 一、基础概念 1. InputStream与OutputStream:这是Java IO体系中的两大基本接口,分别用于数据的读取和写入。InputStream代表字节输入流,...
### 利用缓冲区提高Java应用程序的IO性能 #### 摘要与背景介绍 Java作为一门具有跨平台特性的编程语言,在多个领域都获得了广泛的应用。随着Java应用的不断扩展,其性能问题逐渐成为人们关注的重点,尤其是输入...
### Java IO详解知识点 #### 一、Java IO系统概述 - **Java I/O系统的重要性**:Java I/O系统是Java编程中的基础组成部分之一,用于处理数据的输入与输出。理解和熟练掌握Java I/O系统对于开发高质量的应用程序至...
Java IO流是Java平台中用于处理输入/输出操作的核心组件,它允许程序与各种数据源(如文件、网络连接、内存缓冲区等)进行交互。Java IO流的精讲涵盖了许多概念和技术,包括流的分类、流的方向、缓冲区的使用、字符...
这个例子展示了如何使用传统的Java IO来实现一个服务器端的应用程序,它可以接收客户端发送的消息,并将接收到的信息原样返回给客户端。这里使用了`ServerSocket`和`Socket`来进行网络通信,通过`BufferedReader`来...
在这个“java小项目练习IO实现”中,我们将探讨如何利用Java的IO流来实现本地数据的序列化与反序列化,以及如何将这些概念应用到实际项目中,比如“Olymplic Games Project(IO版)”。 首先,让我们理解什么是序列化...
理解并熟练运用Java IO流技术是开发Java应用程序的关键,它能够有效地处理数据的读写操作,无论是简单的文本文件还是复杂的网络通信。在实际编程中,根据需求选择适当的流类型,结合处理流进行优化,可以构建出高效...
本文将深入探讨Java IO流的基本概念、类型以及它们在实际开发中的应用。 首先,理解IO流的基本概念至关重要。IO流可以分为两大部分:输入流(Input Stream)和输出流(Output Stream)。它们分别用于从源获取数据和...
Java IO系统主要包括两个包:`java.io`和`java.nio`(New IO),其中`java.io`提供了一系列基于流的I/O操作接口与实现类,而`java.nio`则提供了更高效的数据访问方式,如通道和缓冲区等。 Java IO系统的设计原则之...
Java中的IO流是Java核心库的重要组成部分,它用于在不同数据源之间传输数据。Java IO流分为两大类:字符流(Character Stream)和字节流(Byte ...理解并熟练运用这些流可以帮助我们构建高效、可靠的Java应用程序。
本篇文章将全面解析Java IO工具类,帮助你理解并掌握其在实际开发中的应用。 一、Java IO基础 Java IO体系主要由流(Stream)组成,分为字节流和字符流两大类,分别处理字节数据和字符数据。字节流包括InputStream...
### Java.io.Reader与Java.io.InputStream的关键差异解析 在深入探讨`java.io.Reader`与`java.io.InputStream`的具体差异之前,我们首先需要理解这两者在Java I/O操作中的基础角色。`java.io.Reader`和`java.io....