您的位置:首页 > 其它

commns-io jar包中的方法及合并流及线程

2018-02-05 20:54 218 查看
```
自己学习commns-io jar包的方法
1.先找类
2.看该类如何创建对象,调用方法
3.看方法名,揣测方法用意
4.测试看结果,如何整理到方法集中
1)获取路径的扩展名
getExtension(String filename)
2)获取文件名字
getName(String filename)
3)判断是不是这个扩展名
isExtension(String filename,String extension
4)复制文件夹
copyDirectorytoDirectory(File src ,File desc)
5)复制文件
copyFIle(File src,File desc)
6)写入字符串文件
writeStringToFile(FIle src ,String date)
7)读取文件按字符串
readFileTOString(File src)
8)写入文件
write(String date .outputStream output)
9)读取文件到集合中
readlines(inputStream input)

public class demo02 {
public static void main(String[] args) throws IOException {
String string = FilenameUtils.getExtension("/Users/lanou/Desktop/test/haha.txt");
System.out.println(string);
String name = FilenameUtils.getName("/Users/lanou/Desktop/test.txt");
System.out.println(name);
boolean extension = FilenameUtils.isExtension("/Users/lanou/Desktop/test/haha.txt", "png");
System.out.println(extension);
//复制文件夹
FileUtils.copyDirectoryToDirectory(new File("/Users/lanou/Desktop/ccc"), new File("/Users/lanou/Desktop/wads"));
//复制文件
FileUtils.copyFile(new File("/Users/lanou/Desktop/wads/sss.txt"), new File("/Users/lanou/Desktop/ccc/w.txt"));
//写入字符串文件 把原文件替换了
FileUtils.writeStringToFile(new File("/Users/lanou/Desktop/wads/sss.txt"), "hello world");
//读取文件按字符串
String readFileToString = FileUtils.readFileToString(new File("/Users/lanou/Desktop/wads/sss.txt"));
System.out.println(readFileToString);
//写入文件 ,可以选取用什么字节流写入
FileOutputStream fos = new FileOutputStream("/Users/lanou/Desktop/wads/sss.txt");
IOUtils.write("hahah", fos);
//读取文件到集合中,并且是按字符串形式
FileInputStream fis =new FileInputStream("/Users/lanou/Desktop/wads/sss.txt");
List<String> readLines = IOUtils.readLines(fis);
for (String string2 : readLines) {
System.out.println(string2);
}

}
}

合并流
Sequenceinputstream
功能:可以把多个文件读成一个流
构造方法
1,SequenceInputStream(InputStream s1, InputStream s2)
2,SequenceInputStream(Enumeration<? extends InputStream> e)
参数是vector中特有的迭代器,elements,vector中保存的是intputStream 的子类

分割图片的方法
File file = new File("/Users/lanou/Desktop/test/wan.png");
创建输入输出流
FileintputStream fis = new FileintputStream(file);
FileoutputStram fos = null;
开始读
int len = 0;
int num = 1;
byte[] b = new byte[1024];
while((len = fis.read(b))!=-1){
fos = new FileoutputStream("/Users/lanou/Desktop/test/"+ num++ +"png")
fos.write(b,0,len);
}
fos.close();
fis.close();

合并图片
Vector(FileintputStream) vector = new Vector<>();
//假设有10个碎片
for(i = 0;i<10;i++){
File file = new File("/Users/lanou/Desktop/test/wan"+ i +".png");
FileintputStream fis = new FileinputStream(file);
vector.add(fis);
}
Enumeration<FileInputStream> elements = vector.elements;
SequenceintputStream sis = new SequenceStream(elements)
//读到一起写到新路径下
FileoutputStream fos = new FileoutputStream("/Users/lanou/Desktop/test/wanzhiweinew.png");
byte[] b = new byte[1024];
int len = 0;
while((len = sis.read(b))=-1){
fos.write(b,0,len);
}

sis.close();
fos.close();

进程:一个正在运行程序
一个进程中可以有一个线程,也可以有多个线程
线程:一个线程相当于一个CPU执行路径,独立的运行单元

线程的创建
1.创建一个类去继承Thread
Thread中fun方法不是抽象方法,在创建的类中手动重写fun方法。最后在main函数中实例化一个对象,在调用start()方法。
Thread(String name) 该方法在创建线程的时候给同时给该线程起个名
构造方法不能被继承,要想使用父类的构造方法 ,可以在子类中写带参数的
class SubTherad extends Thread {
public SubTherad() {

}
public SubTherad(String name) {
super(name);
}
// 重写run方法
public void run() {
for (int i = 0; i < 50; i++) {
//获取线程名的方法 getName
System.out.println(super.getName() + "--run方法--" + i);
}
}
}

class Namethread extends Thread{
private String name;
public Namethread(){

}
public Namethread(String name,String myname) {
//这里传递的是线程的名字 ,利用 的是父类的构造方法
super(name);
//给自己的类赋值
//建议不用使用name这个名字,避免麻烦
this.name = myname;
}
父类中 已经有了getname方法并且用final修饰,所以不能被重写
//  public String getname() {
//      return name;
//  }
//  public void setname(String name) {
//      this.name= name;
//  }
public String  getmyname() {
return name;
}
public void setmyname(String name) {
this.name = name;
}
public void run() {

}

}

线程中的第二种创建方法
写一个类区实现runnable
/*
* 实现runnable 来创建线程对象
*/
public class demo05 {
public static void main(String[] args) {
//创建一个线程
RunableImtl run =new RunableImtl();
Thread thread = new Thread(run);
thread.start();

}
}

// 接口中run方法是个抽象方法
class RunableImtl implements Runnable {

@Override
public void run() {
for (int i = 0; i < 50; i++) {
System.out.println(Thread.currentThread().getName() + i);
}

}
}


“`
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: