- 浏览: 39566 次
- 性别:
- 来自: 长沙
文章分类
最新评论
-
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 1149(一)前言 ... -
Android之asmack通信客户端
2011-11-06 16:58 15641最近用asmack做一 ... -
再释final关键字、浅析java缓存
2011-09-25 00:21 1524以前总是遇 ... -
用极端例子再探java”继承"
2011-09-24 23:23 1043好久好久的,没有发表blog,之前都一直是开快车,脑子 ... -
多线程初步总结
2011-08-01 20:44 854什么是程序: ... -
java集合框架总结
2011-07-28 19:52 1233java.util.Set<E>: ... -
关键字总结
2011-07-27 20:27 804数据类型 boolean 值只能是true和false ... -
画板制作详解(附代码)
2011-07-04 08:50 0学习了Swing、接口与事件这些内容后,是不是迫 ... -
事件机制详解
2011-07-03 17:02 1044事件机制一般运用在窗体的组件上的:如JButton ... -
接口与抽象类
2011-07-03 11:31 808学习一样东西,首先要知道这个东西什么有什么用? ... -
值传递与引用传递
2011-07-03 10:43 1047值传递: 值传递是相对于基本类型和String类 ... -
多态详解
2011-07-03 09:51 800多态之类的继承: 首先,从一个问 ... -
类与对象
2011-07-03 08:23 748类和对象之间微 ...
相关推荐
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...
字节流、文件流、文件操作、字节流文件流相互转换,流的包装
完整的文件io 流操作,有四个函数, Writer read inputStream outputStream自己总结的东东,让大家用用,不图得分,
每个文件描述符对应内核中一个叫file的对象...文件的读写操作最终由inode对象完成。所以,如果读写线程打开同一个文件的话,即使采用 各自独占的文件描述符,但最终都会作用到同一个inode对象上。因此不会提升IO性能。
java中的IO操作总结(一) 所谓IO,也就是Input与Output的缩写。在java中,IO涉及的范围比较大,这里主要讨论针对文件内容的读写 其他知识点将放置后续章节(我想,文章太长了,谁都没耐心翻到最后) 对于文件内容...
这是一篇关于C#IO文件操作的代码总结,有兴趣的可以看一下
主要介绍了java IO 文件操作方法总结的相关资料,需要的朋友可以参考下
Java IO流学习总结 Java流操作有关的类或接口: Java流类图结构: 流的概念和作用 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。即数据在两设备间的传输称为流,流的本质是数据...
文件操作是程序中非常基础和重要的内容,而路径、文件、目录以及I/O都是在进行文件操作时的常见主题,这里想把这些常见的问题作个总结,对于每个问题,尽量提供一些解决方案,即使没有你想要的答案,也希望能提供给...
javaio文件操作工具类,集成小部分对目录操作的方法,平时工作中学习中总结的部分方法方便大家使用~不妥之处望大家指教谢谢~!
java I/O流的总结 1.操作数据单位:字节流、字符流 对于文本文件(.txt,.java,.c,.cpp),使用字符流处理 对于非文本文件(.jpg,.mp3,.mp4,.avi,.doc,.ppt,...),使用字节流处理 2.数据的流向:输入流、输出流 ...
以上能够直接对数据进行读和写的流叫节点流,但是直接用这些来操作是比较麻烦的,而且一个字节一个字节的对文件处理,对硬盘的读取和存入对硬盘的损伤是很大的,因此需要对这些节点流进行包装,即外套一些处理流来...
注意:File类封装的路径,而不一定是一个具体的文件,File类不能用于读写文件,File类只能用来处理和文件相关的操作 构造方法 * File(String pathname):根据一个路径得到File对象 * File(String parent, String child)...
Java-IO流/Stream流总结,内容一针见血,没有废话,言简意赅 ...适用场景:Java中的流是随处可见的,涉及文件的操作必须使用IO流,Stream流可以对一些集合进行简便的操作,代码十分优雅,开发中非常常见。
本文实例讲述了Python常见读写文件操作。分享给大家供大家参考,具体如下: 读写文件 读写文件是最常见的IO操作,python内置了读写文件的函数,用法和c是兼容的. 读写文件前,我们必须了解一下,在磁盘上读写文件的功能...
- BIO 和 NIO 拷贝文件的区别 - 操作系统的零拷贝 - 选择器(Selectors) - 选择键(SelectionKey) - 示例:简易的客户端服务器通信 - 总结 Java IO 是一个庞大的知识体系,很多人学着学着就会学懵了,包括...
文件IO操作 文件读写基本操作 CSV和Excel文件的处理 文本文件编码和解码 数据存储与持久化 数据库的使用和操作(如MySQL、MongoDB等) 数据存储格式的选择和优化 实际案例分析 应用所学知识解决真实世界中的爬虫...
题库中包括了单选题、多选题、填空题、简答题和程序设计题等多种类型,涵盖了操作系统的基础概念、进程管理、内存管理、文件系统、IO设备管理等多个方面。 关键信息: 文件格式:RAR 文件大小:约20MB 题目数量:近...
## 操作系统总结 - 内存管理、设备管理(IO)、文件系统(四)* 内存的基础知识* 内存管理的概念* 覆盖与交换* 连续分配管理方式内存的基础知识本节知识总
这是我工作5年依赖不断总结和优化的常用工具类,包括文件操作,发送http请求,swing图形界面常用组件,排列组合等