- 浏览: 480775 次
- 性别:
- 来自: 西安
-
文章分类
最新评论
-
752258:
...
Java文件操作(FIle类) [转] -
darrendu:
帮我解决了问题
启动出了问题:unexpected inconsistency;RUN fsck MANUALLY -
_lostman:
怎么反着来?
如果我现有一个第三方的库,如何在JAVA中调用? ...
java中JNI调用c++的dll -
caoruntao:
brother涛,你太牛了。博客访问量竟然有6W多。不得了呀
java clone -
passlicense:
好文章!顶~
unicode和ISO 8859-1
【转】http://z466459262.iteye.com/blog/755238
先说说路径分隔符: Unix下的是 / 在Dos下的是 \ 怎么记:从键盘上来记: U字符就像一个向下的降落的东西,所以找键盘上的下面的那个斜杠。。。。 File f = new File("aa\\b.txt");//这里Dos下的还需要转义,因为\在java中是一个用于转义的字符,所以使用Dos格式的时候需要转义。。。总结。。我们就用Unix下的格式吧。。。。。 好消息是:java是可以混淆这两种路径分隔符哈。。。 File是磁盘文件本身信息的类。。。。所以目录也是磁盘上的一种文件。。。。 File f= new File("a"); f.isDirectory();//是来判断他是否是一个目录 f.lastModified();//是得到文件最后的修改时间,这里返回long,我们要变成我们认识的东西还得使用Date,Date不仅接受String,他还接受所有基本类型 f.getParent(); //这个的意思是如果new 的时候是new File("aa\\b.txt");那么会返回aa,如果new File("b.txt") 那么返回null 默认情况下new File("/")代表的目录为:System.getProperty("user.dir"); 形如:D:\program\openeap_devstudio\workspace\ctdmanager,也就是项目的根目录,下面有bin目录 new File("/").getAbsolutePath() //返回的是 D:\ String s = System.getProperty("user.dir")+"\\WebRoot\\images\\alert.gif"; File f = new File(s); //这样可以拿到webRoot下面的东西 //这里可以得到 meta-inf下的东西哦。。。。在jsp页面和java页面都可以,当然,因为他们都最后在bin目录下嘛 InputStream in = getClass().getResourceAsStream("/META-INF/corp_template.txt" ); 注意:f.mkdirs();是建立目录,如果f是: C:/zz/1.txt 那么用这个命令也会建立一个1.txt的目录 File f = new File(root.toString()); File dirs = f.getParentFile(); if(!dirs.exists()){ dirs.mkdirs(); } -------------------------------------------------------------- RandomFileAccess类是 随机文件访问类,他提供了众多的文件访问方法 如果我们不想从头到尾开始读写文件,那么就要使用这个类。。。比如流媒体文件的应用中,比如断点续传中。。。。。。 这个就比流读取方式灵活多了 new RandomAccessFile(f,"rw");//对文件以读写方式打开 new RandomAccessFile(f,"r");//对文件以只读方式打开 String name="aaaa"; int age = 23; RandomAccessFile ra = new RandomAccessFile(f,"rw"); ra.write(name.getBytes());//写入一个字节数组----这个不好控制,因为你先getBytes()是用操作系统的规范,所以你读出来不知道是多少字符,然后再写入,也就是说你写入的时候不知道是多少字符 改:ra.writeChars(name); //这样就写入了这个字符,我们规定name一定为8个字符,因为name是在java中给写入的,所以写入一定是16个字节,而且是用Unicode编码写入 对应的读取方式为: String name = ""; for(int i=0;i<8;i++){ name +=ra.readChar(); } 或者:因为我们知道是用Unicode写入,那么读取的时候当然知道怎么读取 byte[] buf = new byte[16]; int len = ra.read(buf); String s = new String(buf,0,len); ra.write(age);//这是写入一个字节,那么如果这个age大于一个字节,那么会发生丢失,怎么办呢?换下面的这个 ra.writeInt(age);//这样会四个字节哈。。。一定会把int完整写入 ra.close(); Byte[] buf = new Byte[8]; RandomAccessFile raf = new RandomAccessFile(f,"rw"); raf.skipBytes(12);//第一个员工的信息被跳过,因为String我们用一个buf[8]来接受,也就是说我们规定了name的最大长度为8byte,然后一个int为4byte,所以加起来为12byte....我们对String做了一件事,如果大于8个字符,那么截断,如果少于8个字符,那么补全。。。-----注意啦:如果我们用length来规定长度,他规定的是字符长度,并不等于我们在写入文件的时候是固定的字节长度 int retLen = raf.read(buf);//把读到的东西放到buf里面,因为我们知道我们文件的格式,所以就读8个,retLen为读到的长度,如果buf是8位,但是只读到了5为,那么就会返回5 下面要把buf转换成String ....要变字符串,当然是new String...一定会有相应的构造方法的,就像如果要把 String s = new String(buf,0,retLen);//把buf中从第0个到retLen个字节都拿出来组装成一个字符串 raf.seek(0);//跳转到0这个位置,这是绝对定位,也就是跳转到开始。。 raf.close(); raf.read()//读取1个字节的内容,因为我们明确知道是一个字节,所以返回值就不应该是一个字节的长度信息,这样很累赘,所以他返回的是读取的那个字节的内容 raf.readInt();//读取四个字节的整数来返回 raf.read(buf);//读取buf长度的信息,返回的是字节长度。。 在java中因为是unicode编码,所以中文和英文都占用两个字节的空间,但是在本地操作系统中英文是1个字节,汉字是两个字节 s.getBytes();//这个方法是根据本地操作系统来操作的,如果他碰到一个英文只会转换成一个字节,中文会转换成两个字节 比如:s = "张三\u0000\u0000\u0000\u0000\u0000\u0000"; s.length()为8,他指的是字符的长度 s.getBytes();//这个时候“张三”这两个字转换成了4个字节,而后面的转换成了6个字节,所以一共是10个字节 题目1: 1、编写一个程序,将a.txt文件中的单词与b.txt文件中的单词交替合并到c.txt文件中,a.txt文件中的单词用回车符分隔,b.txt文件中用回车或空格进行分隔。 public class MainClass{ public static void main(String[] args) throws Exception{ FileManager a = new FileManager("a.txt",new char[]{'\n'}); FileManager b = new FileManager("b.txt",new char[]{'\n',' '}); FileWriter c = new FileWriter("c.txt"); String aWord = null; String bWord = null; while((aWord = a.nextWord()) !=null ){ c.write(aWord + "\n"); bWord = b.nextWord(); if(bWord != null) c.write(bWord + "\n"); } while((bWord = b.nextWord()) != null){ c.write(bWord + "\n"); } c.close(); } } class FileManager{ String[] words = null; int pos = 0; public FileManager(String filename,char[] seperators) throws Exception{ File f = new File(filename); FileReader reader = new FileReader(f); char[] buf = new char[(int)f.length()]; //直接把文件全部都load到内存中。。好狠 int len = reader.read(buf); String results = new String(buf,0,len); String regex = null; if(seperators.length >1 ){ regex = "" + seperators[0] + "|" + seperators[1]; }else{ regex = "" + seperators[0]; } words = results.split(regex); //把整篇文章导成数组 } public String nextWord(){ if(pos == words.length) return null; return words[pos++]; } } 2。、编写一个程序,将d:\java目录下的所有.java文件复制到d:\jad目录下,并将原来文件的扩展名从.java改为.jad。 public class Jad2Java { public static void main(String[] args) throws Exception { File srcDir = new File("java"); if(!(srcDir.exists() && srcDir.isDirectory())) throw new Exception("目录不存在"); File[] files = srcDir.listFiles( new FilenameFilter(){ public boolean accept(File dir, String name) { return name.endsWith(".java"); } } ); System.out.println(files.length); File destDir = new File("jad"); if(!destDir.exists()) destDir.mkdir(); for(File f :files){ FileInputStream fis = new FileInputStream(f); String destFileName = f.getName().replaceAll("\\.java$", ".jad"); FileOutputStream fos = new FileOutputStream(new File(destDir,destFileName)); copy(fis,fos); fis.close(); fos.close(); } } private static void copy(InputStream ips,OutputStream ops) throws Exception{ int len = 0; byte[] buf = new byte[1024]; while((len = ips.read(buf)) != -1){ ops.write(buf,0,len); } } }
发表评论
-
java clone
2012-02-27 17:12 1361【转】http://zhengjunwei2007-163-c ... -
Java程序性能优化
2012-02-27 17:02 822一、避免在循环条件中使用复杂表达式 在不做编译优化的情况 ... -
Java 访问权限
2012-02-27 16:54 1229[转]http://www.cnblogs.com/itao/ ... -
Java方法继承、方法重载、方法覆盖小总结
2012-02-27 16:42 1152[转] http://blog.csdn.net/c ... -
关于 java 您不知道的 5 件事 系列
2011-08-31 15:16 845http://www.ibm.com/developerwor ... -
ConcurrentHashMap与CopyOnWriteArrayList比较
2011-08-31 15:10 1325【转】http://www.iteye.com/t ... -
ConcurrentHashMap Collections.synchronizedMap和Hashtable讨论
2011-08-31 15:09 1184[转]http://www.w3china.org/blog/ ... -
JAVA的Random类
2011-08-30 15:22 878【转】http://www.cnblogs.com ... -
Direct vs non-direct ByteBuffer
2011-08-30 14:55 1181[转]http://littcai.iteye.com/blo ... -
详细介绍Java垃圾回收机制
2011-08-29 22:57 1262【转】http://developer.51cto.com/a ... -
System.gc() 和System.runFinalization()
2011-08-29 22:52 1621The Java language provide ... -
Java对象的强、软、弱和虚引用
2011-08-29 21:43 914[转]http://developer.51cto.com/a ... -
java对象,引用,实例
2011-08-22 11:05 596[转]http://jzgl-javaeye.iteye.co ... -
垃圾收集解析
2011-08-22 09:15 814[转]http://www.cnblogs.com/rolle ... -
Java对象序列化ObjectOutputStream和ObjectInputStream示例
2011-08-21 16:23 1085[转]http://sjsky.iteye.com/blo ... -
Java i++原理及i=i++的问题说明
2011-08-20 16:21 1599[转]http://blog.sina.com.cn/s/bl ... -
Java中的transient,volatile和strictfp关键字
2011-06-21 16:36 967转:http://www.iteye.com/topic/52 ... -
如何使用Proxy模式及Java内建的动态代理机制
2011-06-09 20:09 9401.Proxy模式 代理模式支持将某些操作从实际的对象中 ... -
System.load和System.loadLibrary
2011-05-24 21:49 1468转:http://hi.baidu.com/mynetbean ... -
static块到底什么时候执行?
2011-05-19 18:34 1232转:http://www.iteye.com/topic/11 ...
相关推荐
- **File类**:如何创建、删除、重命名文件和目录,以及获取文件信息。 - **RandomAccessFile**:了解随机访问文件,进行读写操作。 - **NIO(New I/O)**:讲解非阻塞I/O模型,包括Channels、Buffers和Selectors...
- `java.io.File` 用于表示文件和目录路径名,提供了许多方法来获取和设置文件属性。 - **文件流的建立** - `FileInputStream` 和 `FileOutputStream` 分别用于读取和写入文件。 - **缓冲区流** - `...
- **File类**: - 操作文件和目录。 - **基本的流类**: - 如`InputStream`、`OutputStream`等。 - **Reader和Writer**: - 字符流。 - **Charset类**: - 字符编码。 - **RandomAccessFile**: - 随机访问文件。 - ...
##### 12.10 RandomAccessFile类 - 可以随机访问文件。 ##### 12.11 对象序列化 - 序列化是将对象的状态转化为字节流以便于保存或传输的过程。 ##### 12.12 Properties类 - 用于处理键值对,常用于配置文件。 ###...
File类用于处理文件操作,RandomAccessFile则支持随机访问文件。位元串流如InputStream和OutputStream处理二进制数据,常见的有FileInputStream和FileOutputStream,以及缓冲流BufferedInputStream和...
- **读取目录:** 使用`File`类的方法`listFiles()`来获取目录下的所有文件和子目录。 - **判断文件是否存在:** 使用`File.exists()`方法。 - **写入文件:** 使用`FileOutputStream`或`BufferedWriter`等类。 7. ...
16.3.2 JDBC常见接口和类 16.3.3 JDBC数据库连接步骤 16.3.4 加载JDBC驱动程序 16.3.5 获取Connection连接对象 16.4 Java与各种数据库连接 16.5 本章习题 第17章 Java Web应用——JSP 17.1 JSP技术概述 17.2...
在标题和描述中提到的“MemMapFile”是Java中的一种内存映射文件(Memory-Mapped File)技术,它允许我们将文件直接映射到虚拟内存中,从而高效地读写大文件。这种技术在处理大量数据时非常有用,因为它可以利用操作...