java 学习笔记之 流文件的操作
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 学习笔记之 流文件的操作相关的知识,希望对你有一定的参考价值。
ava 学习笔记之 流、文件的操作
对于一些基础的知识,这里不再过多的解释,
简单的文件查询过滤操作
package com.wfu.ch08;
import java.io.File;
import java.io.FilenameFilter;
public class Test1 {
public static void main(String[] args) {
File file=new File("F:\\2017-2018-1\\javase");
// //获取该目录下,所有的文件或目录的名字组成的字符串数组
// String[] list=file.list();
// //遍历list
// for(String str:list){
// System.out.println(str);
// }
// File[] list=file.listFiles();
// //遍历文件数组list
// for(File f:list){
// if(f.isDirectory()){
// System.out.println("目录:"+f.getName());
// }
// else{
// System.out.println("文件:"+f.getName());
// }
// }
//引用外部类实现过滤器功能
MyFilter filter=new MyFilter();
String[] list=file.list(filter);
for(String str:list)
{
System.out.println(str);
}
// File file=new File("d:\\test.txt");
// System.out.println("是目录吗?"+file.isDirectory());
// System.out.println("文件大小"+file.length());
// System.out.println("文件名:"+file.getName());
// System.out.println("文件路径"+file.getPath());
// Date date=new Date(file.lastModified());
// System.out.println("最后修改时间为:"+date);
// System.out.println("是文件吗?"+file.isFile());
}
}
//外部类实现过滤,因为FilenameFilter 是没有实现类的,所以只好我们自己写啦
class MyFilter implements FilenameFilter{
@Override
public boolean accept(File dr, String name) {
// TODO Auto-generated method stub
if(name.endsWith(".doc")||name.endsWith(".docx")){
return true;
}
else{
return false;
}
}
}
内部类举例
package com.wfu.ch08;
import java.io.File;
import java.io.FilenameFilter;
public class Test2 {
public static void main(String[] args) {
File file=new File("F:\\2017-2018-1\\javase");
Test2 t=new Test2();
Test2.MyFilter filter=t.new MyFilter();
String[] list=file.list(filter);
for(String s:list){
System.out.println(s);
}
}
//这个类写在了类 Test2 中,所以是内部类,在调用内部类是一定要声明对象啊啊啊啊啊
class MyFilter implements FilenameFilter{
@Override
public boolean accept(File arg0, String arg1) {
// TODO Auto-generated method stub
if(arg1.endsWith(".doc")||arg1.endsWith(".docx")){
return true;
}
else{
return false;
}
}
}
}
匿名类举例
package com.wfu.ch08;
import java.io.File;
import java.io.FilenameFilter;
public class Test3 {
public static void main(String[] args) {
File file=new File("F:\\2017-2018-1\\javase");
//这里的没有写类的名字,而是直接写的实现方法,这样就是匿名的内部类
String[] list=file.list(new FilenameFilter(){//这个地方本来是不能直接使用接口的,但是,因为下面的实现类也写上了,所也这里实质山是调用的实现类,而不是接口
@Override
public boolean accept(File arg0, String arg1) {
// TODO Auto-generated method stub
if(arg1.endsWith(".doc")||arg1.endsWith(".docx")){
return true;
}
else{
return false;
}
}
});
for(String s:list){
System.out.println(s);
}
}
}
流、文件的操作简单举例
package wfu;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
public class Test3 {
public static void main(String[] args) throws IOException {
FileOutputStream out = new FileOutputStream("d:\\test2.txt");
String str = "This is a bug";
out.write(str.getBytes());//写入字符数组
//out.close();
FileInputStream input = new FileInputStream("d:\\test2.txt");
byte[] b = new byte[1024];
input.read(b);
System.out.println(new String(b));
//input.close();
FileOutputStream outto = new FileOutputStream("f:\\test2.txt");
out.write(str.getBytes());
out.close();
//
// //利用字节流的话会出现中文乱码
// //所以说如果有中文的话还是用字符流比较好
// FileInputStream input = new FileInputStream("d:\\test.txt");
// int x = input.read();
// do{
// System.out.print((char)x);
// x= input.read();
// }while(x!=-1);
// //关闭流
// input.close();
//
// //创建文件字节输入流
// InputStream input = new FileInputStream("d:\\test.txt");
//
// //在输入流中读数据
// byte[] b = new byte[1024];
// input.read(b);
// System.out.println(new String(b));//转换成字符串
// //关闭
// input.close();
// //创建文件输出流
// OutputStream out = new FileOutputStream("d:\\test1.txt");//文件不存在就自动创建一个,如果有的话,就执行此文件
// out.write(b);
// out.close();
}
}
以上是关于java 学习笔记之 流文件的操作的主要内容,如果未能解决你的问题,请参考以下文章
Java 学习笔记 - IO篇:常见的IO流Stream以及相互关系