JAVA IO 操作 以前学习时的代码 现在翻出来

/**

* File 类不仅单纯的指文件对象也可以指是目录对象

* 可以使用File 类操作文件和目录

* 以下实例可以说明

*/



package simon;



import java.io.*;

import java.util.*;

/**

*@author Simon lv

*文件类对象-- 文件和目录操作的综合实例

*创建文件夹创建文件

**/

public class FileDemo{



public static void main(String args[])throws IOException{



//提示输入目录

System.out.println("请输入目录地址:");

BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));



//从控制台输入的字符串地址

String address = reader.readLine();



//创建一个目录

File objDir = new File(address);



//如果对象存在

if(objDir.exists()){

System.out.println("已存在此目录!");

}else{

objDir.mkdirs(); //创建文件夹对象mkdirs() 方法和mkdir()有区别请自己尝试了解

System.out.println("已经在指定目录创建此文件夹!");

}





//在objDir 目录对象中创建一个test.txt 的文件

File objFile = new File(objDir,"test.txt");



//创建文件是否成功

boolean flag = objFile.createNewFile();



//如果成功

if(flag){

System.out.println(objFile.getAbsolutePath()+" 已经创建好指定文件!");

}else{

System.out.println("创建失败!(可能文件已经存在!)");

}



//打印文件信息

System.out.println("\n绝对路径:"+objFile.getAbsolutePath());

System.out.println("文件名称:"+objFile.getName());

System.out.println("字节大小:"+objFile.length());

System.out.println("文件对象路径:"+objFile.getAbsoluteFile());



//得到最后修改时间自年月日起的毫秒数

long time = objFile.lastModified();



//用毫秒数构建时间对象

Date dt = new Date(time);

System.out.println("最后修改时间:"+dt.toLocaleString());

System.out.println("父文件夹:"+objFile.getParent());

}

}




package demo;



import java.io.*;

import java.util.*;



public class FileRead{



public static void main(String args[])throws IOException{

File dir = new File("C:\\Simon\\TEST");

dir.mkdirs(); //在C盘位置创建一个Simon 的文件夹下有Test 文件夹



File file = new File(dir,"MYTEST.txt");

file.createNewFile(); //如果在Simon 文件夹下不存在MyTest.txt 文件的话就重新创建一个



FileRead.showFileInfo(file);

}



//显示文件夹/文件的信息

public static void showFileInfo(File objFile) throws IOException{

System.out.println("文件或者目录是否存在? "+objFile.exists()); //exists() 方法

System.out.println("是文件吗? "+objFile.isFile()); //isFile()方法

System.out.println("是目录吗? "+objFile.isDirectory()); //isDirectory() 方法

System.out.println("名称: "+objFile.getName());

System.out.println("路径: "+objFile.getPath());

System.out.println("上一层目录:"+objFile.getParent());//得到上一层目录

System.out.println("绝对路径: "+objFile.getAbsolutePath());//得到绝对路径

System.out.println("最后修改时间: "+new Date(objFile.lastModified()).toGMTString());//最后的修改时间

System.out.println("文件大小: "+objFile.length()); //文件大小

System.out.println("绝对路径上的文件对象: "+objFile.getAbsoluteFile());



File file = objFile.getParentFile().getParentFile(); //得到上一层目录对象的上一层

File objF = new File(file,"objF.txt");

objF.createNewFile(); //在上一层目录对象中创建一个文件

}

}




package demo;



import java.io.*;



public class FileInputStreamDemo{



public static void main(String args[]){

try{

File file = new File("C:\\Test.txt"); //创建一个文件对象

FileInputStream objFile = new FileInputStream(file); //创建一个文件输入流对象源文件对象file



int size=objFile.available(); //能读取到的字节数



System.out.println("可读取的字节:"+size);



System.out.println("文件内容如下: \n");



byte [] bt = new byte[size+1];



StringBuffer buf = new StringBuffer();



while(objFile.read(bt)!=-1){

buf.append(new String(bt));

}

System.out.println(buf.toString());

objFile.close(); //关闭输入流



}catch(IOException ex){

System.out.println("IO 流操作错误!\n");

}

}

}




package demo;



import java.io.*;



//字节流输出操作

public class FileOutputStreamDemo{



public static void main(String args[])throws IOException{



File file = new File("C:\\FileOutputStreamDemo.txt");//构建文件对象



//判断文件是否已经存在

if(file.exists()){

System.out.println("此文件已经存在!\n");



}else{

file.createNewFile(); //如果不存在就重新创建文件

System.out.println("创建成功!\n");

}

System.out.println("文件大小:"+file.length());



System.out.println("请输入文本内容:\n");

BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));

String mess = reader.readLine(); //输入的文本内容



byte bt[] = mess.getBytes(); //得到输入的字符串字节数组



//输出流对象

FileOutputStream out = new FileOutputStream(file);



//写操作

out.write(bt,0,bt.length);



System.out.println(file.getName()+" 文件已经更新!");

System.out.println("文件大小:"+file.length());



System.out.println("再次从"+file.getName()+" 读取文件内容!\n");



FileInputStream in = new FileInputStream(file);

int size = in.available(); //可读取的长度



byte bs[] = new byte[size+1];



StringBuffer buf = new StringBuffer();



//不断的循环读取数据源的内容

while((in.read(bs))!=-1){

buf.append(new String(bs));

}



System.out.println("内容为: "+buf.toString());

}

}




package demo;



import java.io.*;



//单独的FileReaderDemo 也可以进行数据流的操作

public class FileReaderDemo{



public static void main(String args[])throws IOException{

//绑定当前路径下的一个文件

File file = new File("FindString.txt");



//创建FileReader 对象

FileReader reader = new FileReader(file);



//字符数组

char ch[] = new char[200];



//不为-1 代表没有读取完

while(reader.read(ch)!=-1){

String str = new String(ch);

System.out.println(str);

}



}

}




package demo;



import java.io.*;



//BufferedReader 使用实例

public class BufferedReaderDemo{



public static void main(String args[]){

File file = new File("C:\\Test.txt"); //构建指定位置的一个文件对象



try{

if(!file.exists()){

file.createNewFile(); //如果这个文件不存在就创建一个新的

}



BufferedReader reader = new BufferedReader(new FileReader(file)); //构建reader 对象,读的对象是file

String str =null;



//每次读取一行不为空为止

while((str=reader.readLine())!=null){

System.out.println(str); //打印

}

reader.close();

}catch(IOException ex){

System.out.println("读写文件时出现的错误!");

}

}

}




package demo;



import java.io.*;



public class BufferedWriterDemo{



public static void main(String args[])throws IOException{

File file = new File("Test.txt");



if(!file.exists()){ //如果文件不存在就创建一个新的

file.createNewFile();

}



BufferedWriter bw = new BufferedWriter(new FileWriter(file)); //文件写对象



System.out.println("请输入信息EXIT-退出!");



BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); //从控制台的输入



String str=null;



while((str=br.readLine())!=null){ //如果字符串不为空

if(str.equals("EXIT")){ //如果用户输入的是EXIT 就退出

break;

}else{

//写数据流

bw.write(str);

bw.newLine();

}

br = new BufferedReader(new InputStreamReader(System.in));

}

bw.flush();

br.close();

bw.close();

}

}




import java.io.*;



/**

* 文件内容的读取和追加处理

*/

public class WriteDemo{



public static void main(String args[])throws IOException{



File file = new File("C:\\FileDemo.txt"); //获取一个文件对象



StringBuffer buf = new StringBuffer();

FileInputStream in;



if(file.exists()){ //如果这个文件事先存在

System.out.println("文件已经存在!");



in = new FileInputStream(file); //创建输入流对象

int size = in.available(); //可读取的字节大小

byte bt [] = new byte[size];



while(in.read(bt)!=-1){

buf.append(new String(bt)); //先将文件中的内容全部取出

}

}else{ //如果这个文件事先不存在,就先创建一个文件对象

file.createNewFile();

System.out.println("\n新创建了一个文件! 文件名:"+file.getName());

}



System.out.println("请输入内容: ");

BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); //重新输入的新内容

String str = reader.readLine();



//询问用户是否需要把从控制台上输入的文本替换以前文本中的内容

System.out.println("\n是否需要将已有文件内容替换? (Y/N)");

BufferedReader re = new BufferedReader(new InputStreamReader(System.in));

char ans = re.readLine().charAt(0); //得到用户回答



FileOutputStream out = new FileOutputStream(file); //构建输出流对象



if(ans=='Y'||ans=='y'){

out.write(str.getBytes()); //如果需要替换,就直接向文件中写文件

}else{

buf.append(str); //否则就追加以前的内容

out.write(buf.toString().getBytes()); //写文件

}



buf = new StringBuffer();

System.out.println("新的内容为: \n");

in = new FileInputStream(file); //创建输入流对象

int size = in.available(); //可读取的字节大小



byte bt [] = new byte[size];



//再重新取出所有内容

while(in.read(bt)!=-1){

buf.append(new String(bt)); //先将文件中的内容全部取出

}

System.out.println(buf.toString());

}

}




import java.io.*;



/**

* 通过文件名和关键字查找关键字在文件中出现的次数

*/

public class FindStringDemo{



public static void main(String args[])throws IOException{



//得到文件名

System.out.println("请输入文件名:");

BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));

String path = reader.readLine().trim();



//输入要查找的关键字

System.out.println("请输入关键字: ");

reader = new BufferedReader(new InputStreamReader(System.in));

String keyword = reader.readLine().trim();



//调用自定义的方法,返回这个关键字在文件中出现的次数

int ans=FindStringDemo.findStringBytes(path,keyword);



//跟据返回值做判断,这个返回值是我们自定义的

if(ans==-1){

System.out.println("这个文件的操作读取错误!");

}else if(ans==-2){

System.out.println("文件名输入不正确,请完整输入!");

}else{

System.out.println(keyword +" 在"+path+" 所在的文件里共出现了"+ans+" 次!"); //如果有,则输出关键字出现的次数

}

}



//根据输入的文件名和关键字找这个关键字出现的次数

public static int findString(String fileName,String keyWords){



int count=0;



File file = new File(fileName); //根据输入的文件名构建对象



//判断是否存在

if(!file.exists()){

System.out.println("请检查文件的路径是否正确!\n");

return -2;

}



try{

//使用BufferedReader 对象操作

BufferedReader reader = new BufferedReader(new FileReader(file));



//每次读取一行

String str = reader.readLine();



while(str!=null){

//找出字符串出现的位置

while(str.indexOf(keyWords)!=-1){

//System.out.println(str);

count++;

//把这个字符串出现前的字符去掉,在后一个部分再次搜索这个字符串,能解决一行中多次出现同一字符串的情况

str = str.substring(str.indexOf(keyWords)+1,str.length()-1);

}

str =reader.readLine();

}



}catch(IOException ex){

System.out.println("读写文件时发生的异常!\n");

return -1;

}

return count;

}

//根据输入的文件名和关键字找这个关键字出现的次数

public static int findStringBytes(String fileName,String keyWords){

int count=0;



File file = new File(fileName);



if(!file.exists()){

System.out.println("请检查文件的路径是否正确!\n");

return -2;

}



try{

FileInputStream in = new FileInputStream(file);



byte bts[] = new byte[in.available()];

StringBuffer buf = new StringBuffer();



while(in.read(bts)!=-1){

String str = new String(bts);

buf.append(str);

}

String bufStr=buf.toString();

while(bufStr.indexOf(keyWords)!=-1){

// System.out.println(bufStr.toString());

count++;

bufStr = bufStr.substring(bufStr.indexOf(keyWords)+1);

}



}catch(IOException ex){

System.out.println("读写文件时发生的异常!\n");

return -1;

}

return count;

}

}




package Demo;



import java.io.*;



/**

* 二进制文件的读写操作- 复制图片

*/

public class ImgData{



public static void main(String arg[])throws Exception{



//创建文件对象

File file = new File("123.gif");



//输入对象

FileInputStream fis = new FileInputStream(file);

DataInputStream dis = new DataInputStream(fis);



//输出对象

FileOutputStream fos = new FileOutputStream("temp.jpg");

DataOutputStream dos = new DataOutputStream(fos);



//原始图片可读大小

System.out.println("原图片的可读大小为:"+fis.available()+" 个字节!");



System.out.println("图片复制中...请等待!");



int temp=0;

//读的时候同时写入另一个文件temp.jpg

while((temp=dis.read())!=-1){

dos.write(temp);



}

//显示的效果等待中

for(int i=0;i<11;i++){

Thread.sleep(20);

System.out.println("%"+i+"0 已经复制!");

}



System.out.println("已完成!");

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值