转载篇——
原文地址——http://www.cnblogs.com/rollenholt/archive/2011/09/11/2173787.html
1、创建新文件:
File file=new File("F:\\hi.txt");
try {
file.createNewFile();//在F盘就会产生一个新文件。
} catch (IOException e) {
e.printStackTrace();
}
2、File类的两个常量:
public static void main(String[] args) {
System.out.println(File.separator);
System.out.println(File.pathSeparator);
}
result:
\
;
//因为在linux和windows的分隔符不同,所以应该尽量使用File类的常量。
3、删除文件:
public static void main(String[] args) {
File file=new File("F:"+File.separator+"hi.txt");
if(file.exists()){ //删除文件之前应该进行判断...避免出现FileNotFound
file.delete();
}
}
4、创建文件夹:
public static void main(String[] args) {
String dir="F:"+File.separator+"hello";
File f=new File(dir);
f.mkdir();
}
5、列出一个目录的所有文件,包括隐藏文件:
public static void main(String[] args) {
String dir="F:"+File.separator;
File f=new File(dir);
String[] str=f.list(); //只会列出目录的文件,不会列出子目录下的文件...list()方法返回的是文件名,如果想要返回的是完整的包括路口的文件名,可以使用
for(int i=0;i<str.length;i++){
System.out.println(str[i]);
}
}
public static void main(String[] args) {
String dir="F:"+File.separator;
File f=new File(dir);
File[] str=f.listFiles();
for(int i=0;i<str.length;i++){
System.out.println(str[i]);
}
}
6、搜索指定目录的全部文件,采用递归调用的方法:
public static void main(String[] args) {
String dir="F:"+File.separator;
File f=new File(dir);
print(f);
}
public static void print(File f){
if(f!=null){
if(f.isDirectory()){
File[] files=f.listFiles();
if(files!=null){
for(int i=0;i<files.length;i++){
print(files[i]);
}
}
}else{
System.out.println(f);
}
}
}
7、使用RandomAccessFile写入文件(字节流):
public static void main(String[] args) throws IOException {
String filename="F:"+File.separator+"hi.txt";
File f=new File(filename);
if(f!=null){
if(f.exists()){
RandomAccessFile demo=new RandomAccessFile(f,"rw");
demo.writeBytes("wahaha");
demo.writeInt(10);
demo.writeBoolean(true);
demo.writeChar('A');
demo.close();
}
}
}
//打开查看发现有乱码
8、OutPutStream写入文件(字节流):
public static void main(String[] args) throws IOException {
String filename="F:"+File.separator+"hi.txt";
File f=new File(filename);
if(f!=null){
if(f.exists()){
OutputStream out=new FileOutputStream(f); //这样会覆盖掉整个文件的内容,如果想要在文件中追加内容,构造函数应该改成new FileOutputStream(f,true);
String str="娃哈哈啊";
byte[] b=str.getBytes();
out.write(b);
out.close();
}
}
}
9、读取文件的内容(字节流):
public static void main(String[] args) throws IOException {
String filename="F:"+File.separator+"hi.txt";
File f=new File(filename);
if(f!=null){
if(f.exists()){
InputStream in=new FileInputStream(f);
byte[] b=new byte[1024];
int len=0;
while((len=in.read(b))>0){ // 文件读取到末尾后返回-1
System.out.println(new String(b,0,len)); //避免产生大量空格
}
}
}
}
10、字符流操作文件和字节流差不多。有Writer、Reader...字节流和字符流操作文件的区别:实际上字节流在操作的时候本身是不会用到缓冲区的,是文件本身的直接操作的,但是字符流在操作的时候下后是会用到缓冲区的,是通过缓冲区来操作文件的。如果我们在使用字符流操作的时候,最后没有使用close(),那么文件中是没有内容的,因为需要刷新缓冲区。
11、文件复制:
public static void main(String[] args) throws IOException {
String filename="F:"+File.separator+"hi.txt";
File f=new File(filename);
if(f!=null){
File file2=new File("F:"+File.separator,"hello.txt");
InputStream in=new FileInputStream(f);
OutputStream out=new FileOutputStream(file2);
if(in!=null){
byte[] b=new byte[1024];
int len=0;
while((len=in.read(b))>0){
out.write(b, 0, len);
}
}
out.close();
in.close();
}
}
12、输入输出重定向:
public static void main(String[] args) throws IOException {
System.out.println("hello");
File file=new File("F:"+File.separator+"hello.txt");
try {
System.setOut(new PrintStream(new FileOutputStream(file,true)));
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("在文件中才能看到>。。");
}
public static void main(String[] args) throws IOException {
System.out.println("hello");
File file=new File("F:"+File.separator+"hello.txt");
try {
System.setIn(new FileInputStream(file));
byte[] b=new byte[1024];
int len=0;
len=System.in.read(b);
System.out.println("文件中 的内容..."+new String(b,0,len));
} catch (Exception e) {
e.printStackTrace();
}
}
13、合并流——将两个文件中的内容合并到另一个文件:
public static void main(String[] args) throws IOException {
File file1 = new File("F:" + File.separator + "hello.txt");
File file2 = new File("F:" + File.separator + "hi.txt");
File file3 = new File("F:" + File.separator + "ha.txt");
InputStream input1 = new FileInputStream(file1);
InputStream input2 = new FileInputStream(file2);
OutputStream output = new FileOutputStream(file3);
// 合并流
SequenceInputStream sis = new SequenceInputStream(input1, input2);
int temp = 0;
while((temp = sis.read()) != -1){
output.write(temp);
}
input1.close();
input2.close();
output.close();
sis.close();
}
14、文件压缩:
public static void main(String[] args) throws IOException {
File file1 = new File("F:" + File.separator + "hello.txt");
File zipFile=new File("F:"+File.separator+"hello.zip");
InputStream in=new FileInputStream(file1);
ZipOutputStream zipOut=new ZipOutputStream(new FileOutputStream(zipFile));
zipOut.putNextEntry(new ZipEntry(file1.getName()));//设置压缩文件中的名字。。。
zipOut.setComment("-.-");
int len=0;
byte[] b=new byte[1024];
while((len=in.read(b))!=-1){
zipOut.write(b,0,len);
}
in.close();
zipOut.close();
}
15、解压单个文件:
public static void main(String[] args) throws IOException {
File file = new File("F:" + File.separator + "hello.zip");
File outFile = new File("F:" + File.separator + "unZipFile.txt");
ZipFile zipFile = new ZipFile(file);
ZipEntry entry = zipFile.getEntry("hello.txt");
InputStream input = zipFile.getInputStream(entry);
OutputStream output = new FileOutputStream(outFile);
int temp = 0;
while((temp = input.read()) != -1){
output.write(temp);
}
input.close();
output.close();
}
16、解压多个文件:
File file = new File("F:" + File.separator + "hello.zip");
File outFile = null;
ZipFile zipFile = new ZipFile(file);
ZipInputStream zipInput = new ZipInputStream(new FileInputStream(file));
ZipEntry entry = null;
InputStream input = null;
OutputStream output = null;
while((entry = zipInput.getNextEntry()) != null){
System.out.println("解压缩" + entry.getName() + "文件");
outFile = new File("F:" + File.separator + entry.getName());
if(!outFile.getParentFile().exists()){
outFile.getParentFile().mkdir();
}
if(!outFile.exists()){
outFile.createNewFile();
}
input = zipFile.getInputStream(entry);
output = new FileOutputStream(outFile);
int temp = 0;
while((temp = input.read()) != -1){
output.write(temp);
}
input.close();
output.close();
}
17、取得默认编码:
public static void main(String[] args) throws IOException {
System.out.println("系统默认编码为:" + System.getProperty("file.encoding"));
}