文件的输入与输出

这次的练习包含
文件的创建,文件的查找,文件的重命名,文件的读入,文件的写入,文件的复制,文件的简单加密,文

件的简单解密。

1.基本写法

类:File,FileInputStream,FileOutputStream.

创建一个文件:
File file=new File(NAME);

在指定位置创建一个文件:
try{
file.createNewFile();
}catch(IOException e){
e.printStackTrace();
}

测试此抽象路径名表示的文件是否是一个标准文件:
file.isFile()

测试文件是否存在:
file.exists()

创建一个名为NAME的目录(只能创建一级目录):
file.mkdir()

创建一个名为NAME的目录(可以创建多级目录):
file.mkdirs()

更改文件名:
file.renameTo(new File(NAME));

返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件,列出子目录下的文件:
File[] files=file.listFiles();

返回由此抽象路径名表示的文件或目录的名称。:
f.getName();

返回文件的路径,返回此抽象路径名的绝对路径名形式:
f.getAbsolutePath();

关闭文件:
file.close();

文件的读入:

打开读入文件
FileInputStream fop=new FileInputStream("F:/text.txt");
只能直接读入字符串,把数组转为字符串再读入:
//一次性把所有数据都读入数组中
byte[] bytes=new byte[fop.available()];
fop.read(bytes);
//将数组转入字符串,输出字符串
String content = new String(bytes, "GB2312");
System.out.println(content);

文件的输出:


打开输出文件:
FileOutputStream fcl=new FileOutputStream(NAME);

只能直接输出数组,把字符串转为数组再输出:
//将字符串转入数组
byte[] bytes=contect.getBytes("GB2312");
//可以直接输出数组
fcl.write(bytes);

文件的复制,思路:
同时打开输入输出文件,把输入文件中的内容一个个读入,在写入输出文件中即可;
复制一个文件
开要读入的文件
开要写入的文件

int c=fop.read();
while(c!=-1){
fwr.write(c);
c=fop.read();
}
关闭文件
关闭文件

文件的简单加密,思路:
和复制的基本操作一直,只是在输出时把每个读到的字符按照某种规律都变化一遍:
开要读入的文件
开要写入的文件

int c=fop.read();
while(c!=-1){
c=c+1;
fwr.write(c);
c=fop.read();
}
关闭文件
关闭文件

文件的简单解密:
和加密一样,输出之前做加密的逆操作:
fop.read(bytes);
while(int i;i<bytes.length;i++){
byte b=bytes[i]-1;
fwr.write();
}

2.源代码:
[/code]
package IR20130719;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FilterInputStream;
import java.io.IOException;

public class Fileio {

/**文件测试
* @param args
*/
//对读入的文件进行加密然后存在另一个文件中,key为秘钥
public void password(int key){
try{
FileInputStream fop=new FileInputStream("F:/text.txt");
FileOutputStream fcl=new FileOutputStream("F:/text2.txt");
//用这种写法文件有大小,没内容。暂时不清楚原因。
// byte[] bytes=new byte[fop.available()];
// fcl.write(bytes);
int c=fop.read();
while(c!=-1){
fcl.write(c+key);
c=fop.read();
}
fop.close();
fcl.close();

}catch (Exception e) {
e.printStackTrace();
}
}
//输入秘钥,对文件进行解密,加在另一个文件里
public void getpassword(int key){
try{
FileInputStream fop=new FileInputStream("F:/text2.txt");
FileOutputStream fcl=new FileOutputStream("F:/text3.txt");
//用这种写法文件有大小,没内容。暂时不清楚原因。
// byte[] bytes=new byte[fop.available()];
// fcl.write(bytes);
int c=fop.read();
while(c!=-1){
fcl.write(c-key);
c=fop.read();
}
fop.close();
fcl.close();

}catch (Exception e) {
e.printStackTrace();
}
}

//文件的创建和名字的修改
public void testfile(){

File file=new File("F:/text.txt");
//判断文件是否存在
System.out.println(file.isFile());
if(!file.exists()){

// //创建一个名为test.txt的文件
// file.mkdir();
// //可以创建多级目录
// file.mkdirs();
try{
file.createNewFile();
}catch(IOException e){
e.printStackTrace();
}
//给文件更改名字

}
//
// if(file.isFile()){
// System.out.println(file.getAbsolutePath());
// file.renameTo(new File("F:/rename.txt"));
// }

}
//读入文件
public void readfile(){
try{
FileInputStream fop=new FileInputStream("F:/text.txt");
//一次性把所有数据都读入数组中
byte[] bytes=new byte[fop.available()];
fop.read(bytes);
//将数组转入字符串,输出字符串
String content = new String(bytes, "GB2312");
System.out.println(content);
fop.close();
} catch (Exception e) {
e.printStackTrace();
}
}
//文件的写入
public void writefile(){
try{
FileOutputStream fcl=new FileOutputStream("F:/text2.txt");
String contect="文件好麻烦";
//将字符串转入数组
byte[] bytes=contect.getBytes("GB2312");
//可以直接输出数组
fcl.write(bytes);
fcl.close();
}catch (Exception e) {
e.printStackTrace();
}

}
public void copyfile(){
try{
FileInputStream fop=new FileInputStream("F:/text.txt");
FileOutputStream fcl=new FileOutputStream("F:/text2.txt");
//用这种写法文件有大小,没内容。暂时不清楚原因。
// byte[] bytes=new byte[fop.available()];
// fcl.write(bytes);
int c=fop.read();
while(c!=-1){
fcl.write(c);
c=fop.read();
}
fop.close();
fcl.close();

}catch (Exception e) {
e.printStackTrace();
}

}
public void find(File file,String findname){
File[] files=file.listFiles();
if(files!=null){
for(int i=0;i<files.length;i++){
File f=files[i];
if(f.isFile()){
if(f.getName().indexOf(findname)!=-1){
System.out.println(f.getAbsolutePath());
}
}else
{find(f,findname);

}
}
}
}
//主函数
public static void main(String[] args) {
// TODO Auto-generated method stub
Fileio fileio=new Fileio();

fileio.testfile();
// fileio.readfile();
// fileio.writefile();
// fileio.copyfile();
fileio.password(5);
fileio.getpassword(5);
}

}
[code="java"]


这次的都是基础操作,没有算法,但是复杂度有点高。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值