一、File类

1、file既可以代表一个特定文件的名称,又可以代表一个目录下的一组文件的名称,实际上,FilePath对这个类来说是个更好的名字.
2、目录列表器例:

import java.io.File;
import java.io.FilenameFilter;
import java.util.Arrays;
import java.util.regex.Pattern; public class DirList {
public static void main(String[] args) {
File path = new File("./data/baiduvideo/");
String[] list;
if (args.length == 0)
list = path.list();
else {
list = path.list(new DirFilter(args[0]));
}
Arrays.sort(list,String.CASE_INSENSITIVE_ORDER);//按字母排序
for(String dirItem : list)
System.out.println(dirItem);
}
}
class DirFilter implements FilenameFilter {
private Pattern pattern;
public DirFilter(String regex){
pattern = Pattern.compile(regex);
}
@Override
public boolean accept(File dir, String name) {
return pattern.matcher(name).matches();
}
}
//这是list方法的内部实现,策略设计模式
/*public String[] list(FilenameFilter filter) {
String names[] = list();
if ((names == null) || (filter == null)) {
return names;
}
ArrayList v = new ArrayList();
for (int i = 0 ; i < names.length ; i++) {
if (filter.accept(this, names[i])) {
v.add(names[i]);
}
}
return (String[])(v.toArray(new String[v.size()]));
}*/
//匿名内部类改写,可读性不好
public class DirList {
public static void main(final String[] args) {
File path = new File("./data/baiduvideo/");
String[] list;
if (args.length == 0)
list = path.list();
else {
list = path.list(new FilenameFilter() {
private Pattern pattern = Pattern.compile(args[0]);
@Override
public boolean accept(File dir, String name) {
return pattern.matcher(name).matches();
}
});
}
Arrays.sort(list,String.CASE_INSENSITIVE_ORDER);//按字母排序
for(String dirItem : list)
System.out.println(dirItem);
}
}

File类其它常见用法略.

二、io基本使用

package testio;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.ByteArrayInputStream;
import java.io.DataInputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.StringReader; public class BufferedInputFile {
//1、缓冲输入文件
public static String read(String filename) throws IOException{
//BufferedReader目的是为了提高性能
BufferedReader in = new BufferedReader(new FileReader(filename));
String s;
StringBuilder sb = new StringBuilder();
while((s=in.readLine())!=null)
sb.append(s);
sb.append("\n");//readLine已经将换行符删了
in.close();
return sb.toString();
}
public static void main(String[] args) throws IOException {
System.out.println(read("E:/eclipse/testnginx/src/testio/BufferedInputFile.java"));
}
}
public class MemoryInput {
//2、从内存输入
public static void main(String[] args) throws IOException {
StringReader in = new StringReader(
BufferedInputFile
.read("E:/eclipse/testnginx/src/testio/MemoryInput.java"));
int c;
while ((c = in.read()) != -1)
System.out.print((char) c);
}
}
public class FormattedMemoryInput {
//3、格式化内存输入--按字节读取字符,防止出现乱码
public static void main(String[] args) throws IOException {
DataInputStream in = new DataInputStream(new ByteArrayInputStream(
BufferedInputFile.read(
"E:/eclipse/testnginx/src/testio/MemoryInput.java")
.getBytes()));
while(true)
System.out.print((char)in.readByte());
}
}
public class BasicFileOutput {
//1、基本文本输出,为了提供格式化机制,使用PrintWriter
/*static String file = "BasicFileOutput.out";
public static void main(String[] args) throws IOException {
BufferedReader in = new BufferedReader(new FileReader(
"E://eclipse//testnginx//src//testio//BasicFileOutput.java"));
PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter(
file)));
String s;
int lineCount = 1;
while ((s = in.readLine()) != null)
out.println(lineCount++ + ":" + s);
out.close();
in.close();
}*/
//方式2从内存输入
static String file = "BasicFileOutput.out";
public static void main(String[] args) throws IOException {
BufferedReader in = new BufferedReader(new StringReader(
BufferedInputFile.read("E:/eclipse/testnginx/src/testio/BasicFileOutput.java")));
PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter(
file)));
//PrintWriter out = new PrintWriter(file); //PrintWriter的一种快捷方式
String s;
int lineCount = 1;
while ((s = in.readLine()) != null)
out.println(lineCount++ + ":" + s);
out.close();
in.close();
}
}

最新文章

  1. Android 手机卫士3--设置中心
  2. C++实例讲解Binder通信
  3. 20款最佳用户体验的Sublime Text 2/3主题下载及安装方法
  4. BZOJ4154: [Ipsc2015]Generating Synergy
  5. 常用的文件和目录操作命令【转vbird】
  6. springMVC传对象参数、返回JSON格式数据
  7. frameset常用属性
  8. dubbo debug过程中一个有趣的问题
  9. [LeetCode] Design TinyURL 设计精简URL地址
  10. __http原理__HTTP 协议简介
  11. Oracle 批量增加 / 批量跟新
  12. 一张图读懂PBN飞越转弯衔接DF航段计算
  13. 解决面板里没有network manager图标的问题 ,也就是在桌面环境下,没有那个网络图标
  14. WebService上传下载图片
  15. java一维数组作业
  16. 13: openpyxl 读写 xlsx文件
  17. java常用设计模式四:观察者模式
  18. 通信对象 System.ServiceModel.Channels.ServiceChannel 无法用于通信,因为其处于“出错”状态。
  19. python 写文件刷新缓存
  20. 2018.09.22 atcoder Snuke's Coloring 2(线段树+单调栈)

热门文章

  1. php模拟post提交数据
  2. PAT甲级——1101 Quick Sort (快速排序)
  3. Ubuntu16.04双网卡绑定
  4. applicationContext-datasource.xml
  5. groovy使用小记
  6. C# ThreadLocal
  7. js——bootstrap框架
  8. 027 Remove Element 移除元素
  9. Ubuntu批量修改文件后缀
  10. Int与String之间相互转换