- 浏览: 468768 次
- 性别:
- 来自: 西安
文章分类
最新评论
-
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 1319【转】http://zhengjunwei2007-163-c ... -
Java程序性能优化
2012-02-27 17:02 786一、避免在循环条件中使用复杂表达式 在不做编译优化的情况 ... -
Java 访问权限
2012-02-27 16:54 1175[转]http://www.cnblogs.com/itao/ ... -
Java方法继承、方法重载、方法覆盖小总结
2012-02-27 16:42 1106[转] http://blog.csdn.net/c ... -
关于 java 您不知道的 5 件事 系列
2011-08-31 15:16 819http://www.ibm.com/developerwor ... -
ConcurrentHashMap与CopyOnWriteArrayList比较
2011-08-31 15:10 1292【转】http://www.iteye.com/t ... -
ConcurrentHashMap Collections.synchronizedMap和Hashtable讨论
2011-08-31 15:09 1155[转]http://www.w3china.org/blog/ ... -
JAVA的Random类
2011-08-30 15:22 844【转】http://www.cnblogs.com ... -
Direct vs non-direct ByteBuffer
2011-08-30 14:55 1125[转]http://littcai.iteye.com/blo ... -
详细介绍Java垃圾回收机制
2011-08-29 22:57 1229【转】http://developer.51cto.com/a ... -
System.gc() 和System.runFinalization()
2011-08-29 22:52 1583The Java language provide ... -
Java对象的强、软、弱和虚引用
2011-08-29 21:43 877[转]http://developer.51cto.com/a ... -
java对象,引用,实例
2011-08-22 11:05 570[转]http://jzgl-javaeye.iteye.co ... -
垃圾收集解析
2011-08-22 09:15 774[转]http://www.cnblogs.com/rolle ... -
Java对象序列化ObjectOutputStream和ObjectInputStream示例
2011-08-21 16:23 1050[转]http://sjsky.iteye.com/blo ... -
Java i++原理及i=i++的问题说明
2011-08-20 16:21 1539[转]http://blog.sina.com.cn/s/bl ... -
Java中的transient,volatile和strictfp关键字
2011-06-21 16:36 918转:http://www.iteye.com/topic/52 ... -
如何使用Proxy模式及Java内建的动态代理机制
2011-06-09 20:09 9011.Proxy模式 代理模式支持将某些操作从实际的对象中 ... -
System.load和System.loadLibrary
2011-05-24 21:49 1420转:http://hi.baidu.com/mynetbean ... -
static块到底什么时候执行?
2011-05-19 18:34 1192转:http://www.iteye.com/topic/11 ...
相关推荐
资源名称:Java-J2se、J2ee开发全程视频教程和源码(87集)资源目录:【】Java-J2se-J2ee全程教程(01-10)【】Java-J2se-J2ee全程教程(11-20)【】Java-J2se-J2ee全程教程(21-30)【】Java-J2se-J2ee全程教程(31...
jaxmpp-j2se-3.0.0.jar(XMPP/Tigase开发,java代码类型客户端使用的jar包) 需要的朋友自己下载,一个朋友让我帮他找的,就顺便发出来给更多需要的朋友吧
core-2.3.0 + QRCode + zxing-1.6-core + zxing-j2se-1.7 集合jar包
J2SE-IO.ppt,详细介绍J2SE中的IO流
j2se-doc-cn java的API文档,有助于你写JAVA程序.希望大家更加踊跃的学习和更好的学习JAVA。
J2SE-孙鑫授课总结的ppt,本来打算把他的同步教学视频也给传上来,只因为太大,而我现在只能传20MB以上的,所以只好罢了...
javase 的api文档 学习java最基本的东西 大家应该都懂得
官方版本,亲测可用
官方版本,亲测可用
官方版本,亲测可用
官方版本,亲测可用
官方版本,亲测可用
官方版本,亲测可用
官方版本,亲测可用
官方版本,亲测可用
官方版本,亲测可用
jar包,官方版本,自测可用
zxing系列JAVA库,主要用于二维码的编码和解码
J2SE多线程课件,放心下载,绝对可用!
官方版本,亲测可用