File,IO流的一些读写操作

1.File在指定目录创建文件

File file = new File("F:\\hell\\world\\Java\\a.txt");// 创建文件的时候,要保证对应的文件夹已经存在

try {
file.createNewFile();
} catch (IOException e) {
System.out.println("创建失败");

e.printStackTrace();

2.File创建新目录和新文件

File file = new File("D:\\Hello\\World\\a");
File txtFile = new File(file,"a.txt0");
file.mkdirs();//创建新文件夹

try {
txtFile.createNewFile();//创建新文件
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

   mkdirs()与mkdir()的区别

mkdirs()可创建多级目录,mkdir()只能创建一级目录.

3.运用IO流指定数组拷贝指定文件

FileInputStream fis = new FileInputStream("致青春.mp3");//挎号内是文件的路径和文件名字
FileOutputStream fos = new FileOutputStream("copy.mp3");//挎号内是拷贝后的文件的路径和文件名字

byte[] arr = new byte[1024 * 8];
int len;
while((len = fis.read(arr)) != -1) {//如果忘记加arr,返回的就不是读取的字节个数,而是字节的码表值


fos.write(arr,0,len);
}

fis.close();
fos.close();

4.用BufferIO读写文件

BufferedInputStream bis = new BufferedInputStream(new FileInputStream("致青春.mp3"));

BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("copy.mp3"));

int b;
while((b = bis.read()) != -1) {
bos.write(b);
}
bis.close();
bos.close();
 

//BufferedInputStream 和BufferOutputStream  读写是操作一个长度为8192的字节数组进行读写,他们完成一次读写需要操作两个数组,所有单轮效率是没有我们自定义8192数组来操作IO流的效率高的.

//flush和close方法的区别

flush()只是刷新缓存区,刷新完可以继续读写,而close()刷新完缓存区后就关流了,不能继续读写.

     5.JDK1.7版本IO关流写法


try(
FileInputStream fis = new FileInputStream("xxx.txt");
FileOutputStream fos = new FileOutputStream("yyy.txt");

){
int b;
while((b = fis.read()) != -1) {
fos.write(b);
}
 

 6.传统关流的写法

try {
fis = new FileInputStream("xxx.txt");
fos = new FileOutputStream("yyy.txt");

int b;
while((b = fis.read()) != -1) {
fos.write(b);
}
}finally {
try{
if(fis != null)
fis.close();
}finally { //try fianlly的嵌套目的是能关一个尽量关一个
if(fos != null)
fos.close();
}
}

7.IO流简单加密写法

/**
* @param args
* @throws IOException 
* 将写出的字节异或上一个数,这个数就是密钥,解密的时候再次异或就可以了
*/
public static void main(String[] args) throws IOException {
BufferedInputStream bis = new BufferedInputStream(new FileInputStream("copy.jpg"));
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("copy2.jpg"));

int b;
while((b = bis.read()) != -1) {
bos.write(b ^ 123);
}

bis.close();
bos.close();
}





猜你喜欢

转载自blog.csdn.net/qq_34207101/article/details/61467312