java文件类的一些基本用法

  文件类的运用和字符串的运用一样,一般不会是很复杂的算法,关键是选取类中正确的方法,这样就能达到很好的运用效果。
   输入输出流式文件读取的核心内容,弄懂了这个其实文件这一块就比较容易解决了。首先我是这样记住他们这样的用法。第一就是,读取的时候是要把文件从里面弄出来。所以就是FileInputStream,写的时候是从外面写,所以就是Out了嘛。在读取文档的时候一般是通过建立一个数组,把要读去的内容都读取到数组中,然后通过字符串输出结果。这样不会造成汉字的乱码。这个是必须要注意的一点。在写文档的时候最好是一般是把内容放在字符串里面,然后再调用字符串自身的数组把内容提取到新建的数组里面。或是直接使用字符的ASCII码,在调用文件类里面的write方法。从而把文本写到文件里面。
   在调用复制方法的时候,可以把复制的方法稍微的做一些修改。就成为了所谓的密码啦。

package Mrzhou20130719;

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


/**
* 定义一个用来处理文件的类,比如实现文件的创建,修改,复制,读取等功能
* @author 周建权 2013.7.19
*
*/
public class IOfile {



public void testFile(){
File file = new File("D://filetest.txt");
if(file.isDirectory() || !file.exists()){

//只能创建一级目录
//file.mkdir();
//可以创建多级目录
//file.mkdirs();
try {
file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
}
/**
  * 用于查找文件的方法
  * @param file
  * @param findName
  */
public void find(File file,String findName){
//定义一个数组,用来储存所有的文件名
File [] sonFiles=file.listFiles();
if(sonFiles!=null){
for(int i=0;i<sonFiles.length;i++) {
File fi=sonFiles[i];
if(fi.isFile()){
if( fi.getName().indexOf(findName)!=-1){
System.out.println(fi.getAbsolutePath());
}else{
find(fi,findName);
}
}
}
}
}
/**
* 用于读取文件的方法
*/
public void readFile(){
try{
FileInputStream fis=new FileInputStream("D:/filetest.txt");
//新建一个于原文件大小相同的字节数组
byte[] bytes=new byte[fis.available()];
//一次性把所有的字节读到数组中
fis.read(bytes);
//把所有的字节翻译到字符串里面
String string=new String(bytes,"GB2312");
System.out.println(string);
fis.close();
}catch(Exception e){
e.printStackTrace();
}
}
/**
* 用于往文件中加入东西的方法
*/
public void writeFile(){
try{FileOutputStream foS=new FileOutputStream("D:/t2.txt");
//要写入的东西
String string=new String("据说这个世界有许多好吃的");
byte[]bytes=string.getBytes();
foS.write(bytes);
foS.write(174);

foS.close();
}catch(Exception e){
e.printStackTrace();
}
}
/**
* 复制文件内容的字符串
* @param scr
* @param dest
*/
public void copyFile(String scr,String dest){
try{
FileInputStream fiS=new FileInputStream(scr);
FileOutputStream foS=new FileOutputStream(dest);
int c=fiS.read();
while(c!=-1){
c=c+1;
foS.write(c);
c=fiS.read();
}
fiS.close();
foS.close();
}catch (Exception e) {
e.printStackTrace();
}
}
/**
* 定义一个用于读取加密文件的方法
*/
public void readFile02(){
try{
FileInputStream fiStream=new FileInputStream("D:/t2.txt");
//新建一个与原文件大小相同的数组
byte [] bytes=new byte[fiStream.available()];
//把文件中的东西一次性写入数组
fiStream.read(bytes);
for(int i=0;i<bytes.length;i++){
byte b=bytes[i];
b=(byte)(b-1);
bytes[i]=b;
}
String string=new String(bytes,"gb2312");
System.out.println(string);

}catch (Exception e) {
e.printStackTrace();
}
}
/**定义入口
* @param args
*/
public static void main(String[] args) {
IOfile IO=new IOfile();
//IO.testFile();
    //IO.readFile();
//IO.writeFile();
//IO.copyFile("D:/filetest.txt", "D:/t2.txt");
IO.readFile02();
}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值