这次的练习包含
文件的创建,文件的查找,文件的重命名,文件的读入,文件的写入,文件的复制,文件的简单加密,文
件的简单解密。
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.源代码:
这次的都是基础操作,没有算法,但是复杂度有点高。
文件的创建,文件的查找,文件的重命名,文件的读入,文件的写入,文件的复制,文件的简单加密,文
件的简单解密。
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"]
这次的都是基础操作,没有算法,但是复杂度有点高。