/**
* 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("已完成!");
}
}
分享到:
相关推荐
在提供的压缩包文件"Io基础文档"中,可能包含了关于这些概念的详细说明、示例代码和实战指导,对于深入理解和掌握Java IO操作非常有帮助。学习和理解这些内容,将有助于开发者在处理数据输入输出时编写出高效、稳定...
本代码库包含了Java进行基本IO操作的源代码,涵盖了文件的复制、删除、新建和移动等功能,非常适合初学者理解和实践。 首先,我们来探讨一下Java IO操作的基本概念。在Java中,IO操作基于流(Stream)的概念,流是...
在这个“Java io的基本操作很全面的代码”项目中,我们可以看到一系列针对Java IO的实例,对于学习和理解Java IO有着极大的帮助。 首先,我们来看看Java IO的基础知识。Java IO主要包括以下几大核心类: 1. **...
"jsd2207-se-master"可能是一个Java学习项目或课程的代码库,里面可能包含了各种Java IO操作的实例代码,用于实践和学习。通过分析和运行这些代码,你可以加深对Java IO的理解,并提升实际操作能力。 总结,Java IO...
Java IO流是Java平台中用于处理输入输出操作的核心部分,它允许程序与各种数据源(如文件、设备、网络)进行交互。...通过学习和分析这些源代码,你可以更好地掌握Java的输入输出机制,并能更有效地处理各种IO操作。
javaIO流原代码,刚刚开始学习java的同志们可以看看.有问题留言.
Java IO操作是Java编程中非常基础且重要的部分,它提供了对输入输出流的处理,使得程序能够与外部设备(如硬盘、网络、键盘、显示器等)进行数据交换。本工具结合了Java IO操作和JXL库,实现了读取Excel文件并进行...
Java的IO操作是Java编程中不可或缺的一部分,它允许程序与外部存储设备进行交互,如读取文件、写入文件、创建文件夹等。在Java中,`java.io`包提供了大量的类和接口来支持这些功能。 首先,我们来看如何创建一个新...
在学习这些源代码时,你可能会遇到IOException,这是Java IO操作中常见的异常类型,需要正确处理。此外,流的关闭也很重要,通常在finally块中调用close()方法,确保资源得到释放。 通过这四篇博客和相应的源代码,...
java IO教程,java IO教程,java IO教程,java IO教程java IO教程java IO教程java IO教程java IO教程,java IO教程java IO教程java IO教程java IO教程java IO教程,java IO教程,java IO教程,java IO教程,java IO...
提高Java IO操作的性能 虽然抱怨Java程序性能不佳的呼声由来已久,但实际上,如果开发者在整个开发周期内都能够关注性能问题,Java程序完全可以和C/C++程序一样快。本文分析了Java IO应用中一些常见的性能问题。
Java IO(Input/Output)是Java编程语言中用于处理输入和输出操作的重要组成部分。它提供了丰富的类库,允许程序员在不同类型的I/O设备之间进行数据传输,如键盘、显示器、磁盘、网络等。Java IO API包括了流、字符...
### Java IO流学习笔记 #### 异常处理与IO流操作 在进行Java IO流的学习过程中,异常处理是非常重要的一个方面。本节将详细介绍如何在Java中处理异常,并结合具体的IO流操作进行说明。 #### 一、异常处理 在Java...
- 阻塞IO:应用程序在进行IO操作时会被阻塞,直到操作完成。 - 非阻塞IO:在等待数据阶段不会阻塞,但需要定时轮询结果。 - IO多路复用:利用select/poll/epoll函数,使单个线程可以监视多个文件描述符,提高效率。 ...
Java IO流是Java编程语言中处理输入输出操作的重要部分,尤其在数据传输、文件读写等方面发挥着核心作用。本文将深入探讨Java IO流的基本概念、类型以及它们在实际开发中的应用。 首先,理解IO流的基本概念至关重要...
有关io流的输入输出联系代码io流的输入输出文件的读写
在这个"java_IO学习代码"的压缩包中,我们很可能会找到一系列示例代码,帮助我们深入理解Java IO体系。 首先,让我们探讨一下Java IO的基本概念。Java IO模型基于流(Stream)的概念,流是一组有序的数据序列,可以...