字节流/字符流. 以字节为单位读写就是字节流, 字节流的类是以Stream结尾; 以字符为单位读写就是字符流, 字符流是Reader/Writer结尾.
3,IO流自动关闭,不需要对fis.close()和fos.close()进行手动关闭了
package over;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class Demo06 {
public static void main(String[] args) {
try (FileInputStream fis = new FileInputStream("e:/lx/aa.txt");
FileOutputStream fos = new FileOutputStream("e:/lx/df.txt");
) {
byte[] data = new byte[1024];
int length;
length = fis.read(data);
while (length != -1) {
fos.write(data, 0, length);
length = fis.read(data);
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
——————-文本文件的复制
package over;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class demot3 {
public static void main(String[] args) {
// TODO Auto-generated method stub
String src = "e:/lx/dd.txt";
String deString = "e:/lx/abc.txt";
try (FileReader fReader = new FileReader(src); FileWriter fWriter = new FileWriter(deString);) {
char[] data = new char[1024];
int length = fReader.read(data);
while (length != -1) {
fWriter.write(data, 0, length);
length = fReader.read(data);
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
—————-在原有的.txt文件中添加内容
package over;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class demot4 {
public static void main(String[] args) {
FileWriter fWriter=null;
try {
fWriter= new FileWriter("e:/lx/dd.txt",true);
fWriter.write('\n');
fWriter.write("我真是后悔,摊上折磨一位战友");
fWriter.write(32868);
fWriter.flush();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
if (fWriter!=null) {
try {
fWriter.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}
——————–装饰者定义
1.含有父类的引用
2.在子类(装饰者)初始化父类(被装饰者)
3.在子类中重新父类的方法
package over;
import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Map;
public class demot9 {
public static void main(String[] args) throws Exception {
MyBufferedReader bReader = new MyBufferedReader(new BufferedReader(new FileReader("e:/lx/df.txt")));
System.out.println(bReader.readLine());
System.out.println(bReader.readLine());
System.out.println(bReader.readLine());
}
}
package over;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.Reader;
public class MyBufferedReader extends BufferedReader {
private BufferedReader reader;
public MyBufferedReader(BufferedReader in) {
super(in);
this.reader = in;
}
private int lineNum;
@Override
public String readLine() throws IOException {
String line = super.readLine();
lineNum++;
return lineNum + line;
}
}
同步方法:
2.静态代码块
public static void m2() {
//在静态代码块中,可以使用当前类的字节码文件进行同步
synchronized ( Resource.class ) {
System.out.println(“m2……..begin”);
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("m2.......end.");
}
}