问征夫以前路
感谢所有关心过支持过我的人, 感谢所有恨过我嘲笑过我的人 !
posts - 30,comments - 147,trackbacks - 0

        这周忙的连滚带爬的,终于在周末前把项目完工了。这次主要做的是一个UDP协议的转发器,是一个纯java写的程序,没有任何的框架在里面。其中为了保留住传进来的数据,我们用TXT文本记录下这些数据。文件代码传上来,需要的朋友直接下载就可以用。

import java.io.*;


/**
 * 
 * 功能描述:创建TXT文件并进行读、写、修改操作
 *      
 * 
@author <a href="mailto:zhanghhui@126.com">KenZhang</a>
 * 
@version 1.0 
 * Creation date: 2007-12-18 - 下午06:48:45
 
*/

public class ReadWriteFile {
    
public static BufferedReader bufread;
    
//指定文件路径和名称
    private static String path = "D:/suncity.txt";
    
private static  File filename = new File(path);
    
private static String readStr ="";


    
/**
     * 创建文本文件.
     * 
@throws IOException 
     * 
     
*/

    
public static void creatTxtFile() throws IOException{
        
if (!filename.exists()) {
            filename.createNewFile();
            System.err.println(filename 
+ "已创建!");
        }

    }

    
    
/**
     * 读取文本文件.
     * 
     
*/

    
public static String readTxtFile(){
        String read;
        FileReader fileread;
        
try {
            fileread 
= new FileReader(filename);
            bufread 
= new BufferedReader(fileread);
            
try {
                
while ((read = bufread.readLine()) != null{
                    readStr 
= readStr + read+ "\r\n";
                }

            }
 catch (IOException e) {
                
// TODO Auto-generated catch block
                e.printStackTrace();
            }

        }
 catch (FileNotFoundException e) {
            
// TODO Auto-generated catch block
            e.printStackTrace();
        }


        System.out.println(
"文件内容是:"+ "\r\n" + readStr);
        
return readStr;
    }

    
    
/**
     * 写文件.
     * 
     
*/

    
public static void writeTxtFile(String newStr) throws IOException{
        
//先读取原有文件内容,然后进行写入操作
        String filein = newStr + "\r\n" + readStr + "\r\n";
        RandomAccessFile mm 
= null;
        
try {
            mm 
= new RandomAccessFile(filename, "rw");
            mm.writeBytes(filein);
        }
 catch (IOException e1) {
            
// TODO 自动生成 catch 块
            e1.printStackTrace();
        }
 finally {
            
if (mm != null{
                
try {
                    mm.close();
                }
 catch (IOException e2) {
                    
// TODO 自动生成 catch 块
                    e2.printStackTrace();
                }

            }

        }

    }

    
    
/**
     * 将文件中指定内容的第一行替换为其它内容.
     * 
     * 
@param oldStr
     *            查找内容
     * 
@param replaceStr
     *            替换内容
     
*/

    
public static void replaceTxtByStr(String oldStr,String replaceStr) {
        String temp 
= "";
        
try {
            File file 
= new File(path);
            FileInputStream fis 
= new FileInputStream(file);
            InputStreamReader isr 
= new InputStreamReader(fis);
            BufferedReader br 
= new BufferedReader(isr);
            StringBuffer buf 
= new StringBuffer();

            
// 保存该行前面的内容
            for (int j = 1; (temp = br.readLine()) != null
                    
&& !temp.equals(oldStr); j++{
                buf 
= buf.append(temp);
                buf 
= buf.append(System.getProperty("line.separator"));
            }


            
// 将内容插入
            buf = buf.append(replaceStr);

            
// 保存该行后面的内容
            while ((temp = br.readLine()) != null{
                buf 
= buf.append(System.getProperty("line.separator"));
                buf 
= buf.append(temp);
            }


            br.close();
            FileOutputStream fos 
= new FileOutputStream(file);
            PrintWriter pw 
= new PrintWriter(fos);
            pw.write(buf.toString().toCharArray());
            pw.flush();
            pw.close();
        }
 catch (IOException e) {
            e.printStackTrace();
        }

    }

    
/**
     * main方法测试
     * 
@param s
     * 
@throws IOException
     
*/

    
public static void main(String[] s) throws IOException {
        ReadWriteFile.creatTxtFile();
        ReadWriteFile.readTxtFile();
        ReadWriteFile.writeTxtFile(
"20080808:12:13");
//        ReadWriteFile.replaceTxtByStr("ken", "zhang");
    }

}



posted on 2007-12-21 16:46 kenzhang 阅读(75731) 评论(17)  编辑  收藏

FeedBack:
# 发布代码时,怎么实现可伸缩节点[未登录]
2007-12-22 00:34 | johnsdilon
我是blogjava的新用户,想问个弱弱的问题:在blogjava上发布文章时,怎么发布代码,实现函数节点可伸缩。

先谢过了哈!  回复  更多评论
  
# re: java创建TXT文件并进行读、写、修改操作
2007-12-22 12:39 | 凌晨风
@johnsdilon
插入代码就可以了啊  回复  更多评论
  
# re: java创建TXT文件并进行读、写、修改操作
2007-12-22 15:22 | 冷面阎罗
我之前也写过一个程序,实现的功能比这个多了。
不过感觉写这样的程序还是vc比较方便  回复  更多评论
  
# re: java创建TXT文件并进行读、写、修改操作[未登录]
2007-12-22 21:37 | johnsdilon
谢谢,呵呵  回复  更多评论
  
# re: java创建TXT文件并进行读、写、修改操作
2007-12-23 10:07 | aSTAmEI
不错不错
要是加上文字编码的相关部分就好了,
不然各种系统编码下会有问题的
  回复  更多评论
  
# re: java创建TXT文件并进行读、写、修改操作
2007-12-24 08:37 | kenzhang
@冷面阎罗
VC,java,各有千秋!呵呵  回复  更多评论
  
# re: java创建TXT文件并进行读、写、修改操作
2007-12-24 08:41 | kenzhang
@aSTAmEI
这个文件只是用来存储数字和英文,没有存储中文的需求,所以就没做。
呵呵,惭愧的是这个程序好像写入中文后,读出来的是乱码。
  回复  更多评论
  
# re: java创建TXT文件并进行读、写、修改操作[未登录]
2008-01-10 11:59 | 乐乐
真好人啊  回复  更多评论
  
# re: java创建TXT文件并进行读、写、修改操作
2008-07-29 00:23 | wen870105@163.com
好像流没有关闭吧
呵呵  回复  更多评论
  
# re: java创建TXT文件并进行读、写、修改操作
2008-08-23 14:44 | tom_jack
这样修改好像挺费资源的,如果文件非常的大,然而仅仅是为了修改几个单词,那岂不是读半天,能有直接定位的办法么  回复  更多评论
  
# re: java创建TXT文件并进行读、写、修改操作
2008-08-29 00:40 | 风叶
还有2个流没关闭 不会有事吧 ??  回复  更多评论
  
# re: java创建TXT文件并进行读、写、修改操作[未登录]
2008-12-25 09:09 | ls
谢谢  回复  更多评论
  
# re: java创建TXT文件并进行读、写、修改操作
2012-02-20 10:55 | jurs
挺了  回复  更多评论
  
# re: java创建TXT文件并进行读、写、修改操作
2013-04-28 13:12 | 本人纯属虚构
FileOutputStream fos = new FileOutputStream(file);
PrintWriter pw = new PrintWriter(fos);
pw.write(buf.toString().toCharArray());
pw.flush();
pw.close();


fos 没关闭。
操作频繁的东西 这样的细节不注意 会出大问题  回复  更多评论
  
# re: java创建TXT文件并进行读、写、修改操作
2014-01-13 22:33 | sfd
sdf  回复  更多评论
  
# re: java创建TXT文件并进行读、写、修改操作[未登录]
2014-08-05 16:40 | 小熊
mm.writeBytes(filein);
改成 mm.write(filein.getBytes());乱码 就解决了  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航: