当前位置:  技术问答>java相关

一个简单问题,给分!

    来源: 互联网  发布时间:2017-04-30

    本文导语:  我想对本机或远程机上的已经存在的文件进行修改(在指定位置插入字符或在指定位置插入一行),请问如何实现?最好有源程序!一定给分。在此先谢过! | 指定位置???一定要分析你的文件...

我想对本机或远程机上的已经存在的文件进行修改(在指定位置插入字符或在指定位置插入一行),请问如何实现?最好有源程序!一定给分。在此先谢过!

|
指定位置???一定要分析你的文件内容才能找到指定位置吧?

应该就是字符创操作的问题了。

    public void HandleFileStream( String OpenPathFileName,String SavePathFileName ) {
        String readline = "";
        try{
            RandomAccessFile openfile = new RandomAccessFile( this.OpenPathFileName,"r" );
            File file = new File( this.SavePathFileName + "temp" );
            System.out.println("保存アドレス" + this.SavePathFileName );
            RandomAccessFile savefile = new RandomAccessFile( file,"rw" );

            readline = openfile.readLine();
            while( true ) {
                if( readline != null ) {
                    System.out.println( readline );
                    if( readline != null ) {
                        savefile.writeBytes( this.StringHandle( readline ) );
                        savefile.writeBytes("n");
                    }
                    readline = openfile.readLine();
                } else {
                    savefile.close();
                    openfile.close();
                break;
                }
            }
            File filesource = new File( this.SavePathFileName );
            if( filesource.exists() == true ) {
                filesource.delete();
            }
            file.renameTo( new File( this.SavePathFileName ) );
        }catch( FileNotFoundException ee ) {
            System.out.println(ee.getMessage());
        }catch( IOException e ) {
            System.out.println(e.getMessage());
        }
    }

    public String StringHandle( String str ) {
        String ret = "";
        int head = -1;
        int end;
        boolean flg = false;
        String handledstringfrist = "";
        String handledstringtwo = "";
        if( str != null ) {
            for( int i = 0;i  0 ) {
                    if( head != -1 ) {
                        flg = true;
                        handledstringfrist = str.substring( 0,head );
                        handledstringtwo = str.substring( head + end,str.length() );
                        //handledstring = str.substring( head, head + end );
                        System.out.println( "head前=>" + handledstringfrist + handledstringtwo );
                        ret = handledstringfrist + handledstringtwo + this.handletype[i];
                        System.out.println( "head後=>" + ret );
                        break;
                    }
                }
            }
        }
        if( flg == false )
            ret = str;

        return ret;
    }

|
我已前写的一个,是替换指定目录下(包括子目录)的所有.html文件里面的指定字符串,你看看修改一下对你有没有用。


import java.io.*;
import java.util.*;

public class FileControl extends Object {

    public FileControl() {
    }

    public static void getChildrenAndReplace(String directory){
        try{
            File theFile = new File(directory);
            String[] files = theFile.list();
            String fileName;
            for(int i=0;i=0) replaceString(child,"gb_2312-80","iso-8859-1");
            }
        }catch(Exception e){e.printStackTrace(System.out);}
    }

    public static void replaceString(File file,String newStr,String oldStr){
        RandomAccessFile theFile = null;
        try{
            theFile = new RandomAccessFile(file,"rw");
            String content = theFile.readLine();
            int pointer = content.indexOf(oldStr);
            StringBuffer theBuffer = new StringBuffer(content);
            int initIndex = 0;
            StringBuffer newContent = null;
            while(true){
                if(pointer!=-2) pointer = content.toUpperCase().indexOf(oldStr.toUpperCase());
                if(pointer>=0){
                    theBuffer.replace(pointer,pointer+oldStr.length(),newStr);
                    pointer=-2;
                }
                content = theFile.readLine();
                if(newContent==null) newContent = theBuffer;
                else newContent.append("n"+theBuffer.toString());
                if(content!=null) theBuffer = new StringBuffer(content);
                else break;
            }
            int length=Integer.parseInt(""+file.length());
            DataOutputStream dos = new DataOutputStream(new BufferedOutputStream(new FileOutputStream(file),length));
            dos.writeBytes(newContent.toString());
            dos.flush();
            System.out.println("over file:"+file.getPath());
        }catch(Exception e){e.printStackTrace(System.out);}
        finally{
            try{
                theFile.close();
            }catch(Exception e){e.printStackTrace(System.out);}
        }
    }

|
:)那你再想办法吧,俺能力到此

|
文件要是只读呢?我要完成的任务就是这样的,你会遇到麻烦的。

|
有读写权限就够,重新写一次进去就可以.不用删除.

|
修改文件并不难,肯定是覆盖原文件了,关键是有没有相关权限!

远程系统文件更是需要权限的了!这方面花点功夫吧!!

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 修改配置真正解决php文件上传大小限制问题(nginx+php)
  • 简单问题简单问题简单问题简单问题
  • 修改配置真正解决php文件上传大小限制问题(apache+php)
  • 请教两个小问题:一个cgywin下使用vi的问题,另一个socket的问题 iis7站长之家
  • sharepoint 2010中item.Update()和item.SystemUpdate 修改数据版本问题解决
  • 弱弱的一问,linux下的中文问题及网络问题,分不是问题
  • 八个问题帮你快速了解Docker
  • 请教两个小问题:一个cgywin下使用vi的问题,另一个socket的问题
  • 错误:将'const x'作为'x'的'this'实参时丢弃了类型限定问题解决
  • 网页的编码问题!或者java的编码问题,由此引出一条解决中文问题的思路
  • nginx Windows版相关问题及使用说明
  • 死锁的问题 多级锁定问题 循环锁定问题
  • vs2010下禁用vmware的方法以及解决vmware插件导致vs2010变慢的问题
  • [问题]双系统出现的问题!求问题的原因和解决办法!
  • Linux下时钟同步问题:Clock skew detected原因分析及解决方法
  • 初学者问题。一个是编译hello world的问题,一个是配置ssh的问题
  • c/c++服务器程序内存泄露问题分析及解决
  • C程序问题:哪个高手帮我解释下下面的问题,主要是a[0]和&[0] 的区别 和编译器的问题??
  • ​部署 Docker 前必须问自己的四个问题
  • swing的问题还是jbuiler的问题??
  • spring的事务类型及spring和hibernate可能导致的问题分析
  • 菜鸟第一次安装红帽子7.2的一箩筐问题。每个问题会开个帖子,各放100分!请有安装经验的老鸟们帮忙解决。第二个问题:什么是LILO?怎么样


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3