- 浏览: 41043 次
- 性别:
- 来自: 长沙
-
文章分类
最新评论
-
willquan:
我也遇到了MultiUserChat.addInvitatio ...
Android之asmack通信客户端 -
nwsuafer:
补数学去
递归:参见“递归” -
kidding87:
博主最后一句话太有喜感了~
递归:参见“递归” -
xiaocanxccc:
哥们不容易啊,我跟你碰到同样的问题,一对一聊天接收不到信息。用 ...
Android之asmack通信客户端 -
feargod:
嗯,同意。光是会用,是远远不够的,要了解深层的原理。
用极端例子再探java”继承"
File类详解:
所在包:java.io
用处:可以通过File对象的方法创建文件对象、删除文件、查找文件,判断文件是目录还是正式文件。
文件系统的命名规则:
1. 文件的全名包含文件的路径名和扩展名,单独讲一个文件名是,为只带扩展名的文件名,不含路径。
2. 同一目录下不可能存在同名的目录和真实文件,系统主要有目录类型的文件和真是文件两种,真是文件可以没有扩展名,还有第三种我们不需要就是的虚拟内存文件。
3. 相对目录:指不一路径分隔符开头的文件路径
绝对目录:指以根目录开头的路径,以盘符开头的目录都是绝对目录
当前目录:指相对于程序运行时的目录算起的相对路径
4. 目录分隔符和路径分隔符在liunx和win平台上是不同的,前者为“/”和“:”,后者为“\”和“;”,所以应该使用File类提供的相应属性值。
(注意:能用相对路径的就不要用绝对路径以增强可移植性。)
File类构造方法:
File(File parent, String child) |
File(String parent, String child) |
File类常用的方法:
boolean |
delete() |
boolean |
|
boolean |
exists() |
getAbsoluteFile() |
|
getAbsolutePath() |
|
long |
getFreeSpace() |
getName() |
|
getPath() |
|
boolean |
isDirectory() |
boolean |
isFile() |
long |
length() |
static File[] |
listRoots() |
boolean |
mkdir()
|
代码示例:
实现功能:文件创建和删除,打印目录和文件
package lesson11;
import java.io.File;
public class FileTest{
/**
* @param args
*/
public static void main(String[] args) {
FileTest ft = new FileTest();
ft.listRoots();
ft.testCreateAndDelete("D:/Java/Java程序/StudyJava/ NetJava/src/lesson11/Text.txt"); // 路径可变
ft.printDir("src");
// 列出计算机上的根目录
public void listRoots() {
// 直接调用File类
File[] lf = File.listRoots();
System.out.println("磁盘上目录的个数是:" + lf.length);
for (int i = 0; i < lf.length; i++) {
System.out.println("第" + i + "个目录是" + lf[i].getAbsolutePath());
}
}
// 测试文件创建与删除
public void testCreateAndDelete(String fileName) {
// 通过传入的名字构造File对象
File temFile = new File(fileName);
// 判断文件是否存在
if (temFile.exists()) {
if (temFile.isDirectory()) {
System.out.println("这是一个目录:" + temFile.getAbsolutePath());
}
if (temFile.isFile()) {
prinFileAttr(temFile);
// 删除文件
temFile.delete();
String theName = temFile.getName();
String absPath = temFile.getAbsolutePath();
System.out .println("文件已删除,名字是:" + theName + " 绝对路径是:" + absPath);
}
} else {
try {
temFile.createNewFile();
System.out.println("文件已创建!" + temFile.getAbsolutePath());
// 打印出文件的长度
prinFileAttr(temFile);
} catch (Exception ef) {
System.out.println("创建文件失败");
}
}
}
// 打印出文件的相关属性:长度,文件名,父目录名,是否隐藏文件
public void prinFileAttr(File temf) {
System.out.println("文件长度是:" + temf.length());
}
public int printDir(String dirName){
//文件计数器
int count = 0;
File dirFile = new File(dirName);
File[] subFile = dirFile.listFiles();
if(null == subFile||subFile.length==0){
return 0;
}
for(int i=0;i<subFile.length;i++){
if(subFile[i].isDirectory()){
String subDir=subFile[i].getAbsolutePath();
System.out.println("目录:"+subDir);
count +=printDir(subDir);
}
if(subFile[i].isFile()){
count++;
String fileName = subFile[i].getAbsolutePath();
System.out.println("文件:"+fileName);
}
}
return count;
}
}
异常:
Try catch处理机制:
格式:
try{
可能抛出异常的代码……
//如果没有问题出现,指向如下代码
(A) 其他计算代码
}catch(Exception ef){
//如果出现异常后执行的代码;
(B)出现异常情况的执行代码
}
异常信息的分析与程序调试:
1. try catch 机制
2. throws:在方法上抛出异常
例:public void Test() throws Exception(){ 方法体 }
注意:当另外一个方法调用了一个声明为可能抛出异常的方法时,要么将调用这个方法的代码放入try catch块中;要么将调用方法也声明为抛出异常。
3. 如果不想再代码中编写try块,就必须对调用方法做如下声明: public void Test(){
throw new Exception(“”);
}
如果方法体中使用throw关键字抛出了Exception类型(或其子类)的对象,在方法的声明中就必须使用throws关键字声明,throws后面异常类名字必须是throw抛出异常对象的类型或其父类类型---因为永远是自动的。
IO流:
在计算机编程中,流就是一个类的对象,很多文件的输入输出操作都以类的成员函数的方式来提供。
计算机中的流其实是一种信息的转换。它是一种有序流,因此相对于某一对象,通常我们把对象接收外界的信息输入(Input)称为输入流,相应地从对象向外输出(Output)信息为输出流,合称为输入/输出流(I/O Streams)。对象间进行信息或者数据的交换时总是先将对象或数据转换为某种形式的流,再通过流的传输,到达目的对象后再将流转换为对象数据。所以,可以把流看作是一种数据的载体,通过它可以实现数据交换和传输。
在JAVA中,流是一个很形象的概念,当程序需要读取数据的时候,就会开启一个通向数据源的流,这个数据源可以是文件,内存,或是网络连接。类似的,当程序需要写入数据的时候,就会开启一个通向目的地的流。
Java中的流分为两种,一种是字节流,另一种是字符流,分别由四个抽象类来表示:InputStream,OutputStream,Reader,Writer。Java中其他多种多样变化的流均是由它们派生出来的。
流的分类:
1. 字节流
2. 过滤流
3. 数据类型流
4. 对象流
InputStream:
常用方法:
int |
available() |
void |
close() |
int |
read() |
int |
read(byte[] b) |
FileInputStream类:
构造方法:
FileInputStream(File file) |
FileInputStream(FileDescriptor fdObj) |
FileInputStream(String name) |
常用方法和InputStream差不多。
OutputStream:
常用方法:
方法摘要
void |
close() |
void |
flush() |
void |
write(byte[] b) |
void |
write(byte[] b, int off, int len) |
abstract void |
write(int b) |
FileOutputStream类:
构造方法摘要 |
|
FileOutputStream(File file) |
|
FileOutputStream(File file, boolean append) |
|
FileOutputStream(FileDescriptor fdObj) |
|
FileOutputStream(String name) |
|
FileOutputStream(String name, boolean append) |
方法摘要 |
|
void |
close() |
protected void |
finalize() |
getChannel() |
|
getFD() |
|
void |
write(byte[] b) |
void |
write(byte[] b, int off, int len) |
void |
write(int b) |
缓冲流:
功能:提高读写效率
构造方法摘要 |
|
BufferedInputStream(InputStream in) |
|
BufferedInputStream(InputStream in, int size) |
|
BufferedOutputStream(OutputStream out) |
|
BufferedOutputStream(OutputStream out, int size) |
注:对于BufferedOutputStream要么用flush()方法强制想缓冲区的数据读出来,要么要及时close(),否则数据留在缓冲区,会导致数据没有读到输出文件中。
综合实例:
package lesson12;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
public class FileIO {
/**定义一个类,实现文件复制功能
* @param args
*/
public static void main(String[] args) {
//注意两个路径的文件的后缀名一定要相同,否则可以复制,但打开会有乱码
String inputFile = "D:/soft/jdk1.6.CHM";
String outputFile = "D:\\Java\\src\\lesson12\\输出文件.CHM";
FileIO file = new FileIO();
file.copy(inputFile,outputFile);
}
//方法
public void copy(String InputFile,String OutputFile) {
try {
//定义输入流
InputStream ips = new FileInputStream(InputFile);
//定义缓冲输入流
BufferedInputStream bis = new BufferedInputStream(ips);
//计算输入文件的长度
int len = ips.available();
//定义一个字节数组,长度为文件大小
byte[] array = new byte[len];
//读取数据
ips.read(array);
//定义文件输出流
OutputStream ops= new FileOutputStream(OutputFile);
//定义缓冲流
BufferedOutputStream bos = new BufferedOutputStream(ops);
//将数组的内容输出到指定文件里
bos.write(array);
//一定要记得关闭流
bos.flush();
ops.close();
ips.close();
bos.close();
bis.close();
System.out.println("文件输出成功!!");
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
发表评论
-
IFS分形艺术
2013-04-14 18:32 1225(一)前言 ... -
Android之asmack通信客户端
2011-11-06 16:58 15775最近用asmack做一 ... -
再释final关键字、浅析java缓存
2011-09-25 00:21 1618以前总是遇 ... -
用极端例子再探java”继承"
2011-09-24 23:23 1082好久好久的,没有发表blog,之前都一直是开快车,脑子 ... -
多线程初步总结
2011-08-01 20:44 904什么是程序: ... -
java集合框架总结
2011-07-28 19:52 1291java.util.Set<E>: ... -
关键字总结
2011-07-27 20:27 858数据类型 boolean 值只能是true和false ... -
画板制作详解(附代码)
2011-07-04 08:50 0学习了Swing、接口与事件这些内容后,是不是迫 ... -
事件机制详解
2011-07-03 17:02 1080事件机制一般运用在窗体的组件上的:如JButton ... -
接口与抽象类
2011-07-03 11:31 868学习一样东西,首先要知道这个东西什么有什么用? ... -
值传递与引用传递
2011-07-03 10:43 1134值传递: 值传递是相对于基本类型和String类 ... -
多态详解
2011-07-03 09:51 849多态之类的继承: 首先,从一个问 ... -
类与对象
2011-07-03 08:23 801类和对象之间微 ...
相关推荐
4. **适用场景**:标准IO适合文本处理和简单文件操作,而文件IO更适合底层系统编程或高效IO操作。 为了更好地理解和对比这两种IO方式,可以参考以下资源: - **标准IO跟文件IO区别.pdf**:这个文档可能详细分析了...
文件输入输出(File Input/Output,简称文件IO)是计算机编程中的基础操作,尤其是在系统级编程和应用开发中不可或缺。本文将围绕“文件IO编程”这一主题,详细讲解相关知识点,帮助初学者快速掌握文件IO的基本概念...
总结,Android的文件IO操作提供了丰富的API来处理各种数据存储需求。理解这些类和接口的工作原理对于构建高效、可靠的应用程序至关重要。通过合理选择和组合不同的流,开发者可以实现高性能的数据读写操作,同时确保...
在Java编程语言中,IO(Input/Output)操作是处理数据输入和输出的关键部分,尤其在文件操作中显得尤为重要。本篇文章将详细讲解如何使用Java的IO流进行文件复制。 一、基本概念 IO流是Java中处理输入输出的基础,...
Java 7引入了NIO.2,引入了Path、Files、Paths等新类,使得文件操作更加简洁。 总结,Java中的IO文件流操作是编程中必不可少的部分,理解并熟练掌握各类流的使用,能够有效提升程序的效率和灵活性。在实际开发中,...
根据给定的信息,本文将对Java IO的基本概念及其在文件操作中的应用进行详细的解析与总结。主要内容包括:创建文件、删除文件、创建目录、列出指定目录下的所有文件及子目录等基本操作。 ### 一、Java IO概述 Java...
java中的IO操作总结(四) 前面已经把java io的主要操作讲完了 这一节我们来说说关于java io的其他内容 Serializable序列化 实例1:对象的序列化 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23...
在进行文件操作时,还需要关注文件的状态和可能发生的错误。 - **检查文件状态**: 可以使用`eof()`、`fail()`、`bad()`等成员函数来检查文件状态: ```cpp if (fout.eof()) { // 文件结束 } if (fout.fail())...
总结,文件IO是软件开发中不可或缺的一部分,理解并熟练掌握文件的读写操作、错误处理以及高效利用文件系统功能,能极大地提高代码的稳定性和效率。通过学习和实践,你将能够灵活地处理各种文件相关的任务。
Java IO是处理文件读写操作的重要组成部分,涉及多个类和接口。理解它们的使用场景和特点对于进行有效且高效的文件数据处理至关重要。使用时需要注意流的类型(字节流或字符流)、节点流与处理流的区别以及序列化和...
字节流、文件流、文件操作、字节流文件流相互转换,流的包装
这篇博客“Java学习之IO总结及mina和netty”探讨了Java IO的基础知识,并深入到两个高级网络通信框架——Mina和Netty。Mina和Netty都是基于NIO(非阻塞IO)的高性能网络应用框架,它们简化了复杂网络编程的实现。 *...
### Java IO系统全面解析 #### 一、Java IO系统概述 ...无论是文件操作、网络通信还是对象序列化,Java IO系统都能提供合适的方法和技术支持。理解和掌握Java IO系统对于任何Java开发者来说都是非常重要的。
本文总结了 Linux 文件 IO 的相关知识点,涵盖了文件 IO 的基本概念、文件描述符、open 函数、read 函数、write 函数、lseek 函数、close 函数等。 一、文件 IO 概念 文件 IO 是计算机操作系统中最基本的输入/输出...
* 使用 Labview 文件IO 模块可以实现对文件的读取和写入操作。 * 控件板面和存储和数据插件是 Labview 中的基本控件和插件,用于读取和写入文件。 * 通过 Labview 文件IO 模块,我们可以实现对文本文件的内容进行...
在Java中,文件操作主要通过java.io包中的类和接口实现。下面将对Java文件操作进行详细的总结,并提供相关的示例。 1. **File类**:Java中的`File`类是所有文件和目录操作的基础。它提供了创建、删除、重命名文件和...
在IT领域,文件的输入/输出(Input/Output, IO...总结来说,异步IO操作是提高程序性能和响应性的重要手段,尤其在处理文件读写和删除等IO密集型任务时。理解和熟练运用异步编程技术,能够使我们的应用更加高效和健壮。
1. **使用`System.IO`命名空间**:此命名空间包含了用于文件和目录操作的各种类。 2. **使用集合(如`List<T>`)存储数据**:便于数据的管理和处理。 3. **字符串分割和转换**:将读取的字符串按需分割,并将数字...
字节流以字节为单位进行数据传输,主要由InputStream和OutputStream家族构成,例如FileInputStream和FileOutputStream用于文件操作,ByteArrayInputStream和ByteArrayOutputStream则用于内存中的字节数组。...
在这篇总结中,我们将探讨Java IO操作的各个方面,包括File类、RandomAccessFile类、字节流与字符流的基本操作,以及具体实现文件读写的技术细节。 首先,File类在Java IO操作中扮演着重要角色。它提供了关于文件和...