替换一个文件内的某个字符

先看这种写法:

public static void main(String[] args) throws IOException {

        try {
            FileReader r = new FileReader("d:/ti.txt");
        StringBuilder sb = new StringBuilder();
        char[] temp = new char[1];
        int read = r.read(temp);
        while(read!=-1){
            sb.append(temp);
        }
        String strAfter = sb.toString().replace("c", "x");
        FileWriter w = new FileWriter("d:/titi.txt");
        w.write(strAfter);
        r.close();
        w.close();

        } catch (Exception e) {
            // TODO: handle exception
            e.printStackTrace();
        }
    }

debug:

read为1所以while就成了无限循环,内存溢出了

当这样修改后:

public static void main(String[] args) throws IOException {

        try {
            FileReader r = new FileReader("d:/ti.txt");
        StringBuilder sb = new StringBuilder();
        char[] temp = new char[1];
        //r.read(temp)放到while的里
        while((r.read(temp))!=-1){
            sb.append(temp);
        }
        String strAfter = sb.toString().replace("c", "x");
        FileWriter w = new FileWriter("d:/titi.txt");
        w.write(strAfter);
        r.close();
        w.close();

        } catch (Exception e) {
            // TODO: handle exception
            e.printStackTrace();
        }
    }

所以,要一直取一直取一直取的应该放在while里,不能放while外

时间: 2024-10-20 04:02:06

替换一个文件内的某个字符的相关文章

dos移动一个文件内的所有内容到另一个文件

1)移动一个文件内的所有内容到另一个文件(不包含该目录) 比如:把文件夹1 里面的所有文件(包含子目录)全部移动到与1同级目录的文件夹2中: cd 1 for /f "tokens=* delims= " %a in ('dir /a /b') do (move %a ..\2)

使用excel批量合并子文件内容到一个文件内

说到excel大家应该都不陌生,也都对它强大的功能有所耳闻,自己虽然已经用了好多年,但也只能算入门水平,比如今天遇到的一个实际情况就完全不知道怎么处理,上网查阅资料之后才解决,这里记录一下. 实际情况就是:我有很多个小的excel文件,每个文件只有两行内容,且这些文件的列目录都是一样的,也就是说我需要把这几十行内容整理到一张表上. 方法一:直接复制粘贴 几十个文件倒是不算多,但这也不是一个通用的解决方法啊,如果文件再多岂不要累死. 方法二:用VBA宏解决: 求助百度之后果然找到了类似问题的解决方

利用python脚本把多个文件内容放到一个文件内

说明:path是你所有文件存放的目录,先去循环所有的文件内容,然后写入到test.xls文件里 import os path = 'file' # path=r'D:\file' for filename in os.listdir(path): fullname = os.path.join(path, filename) # 如果是linux系统导出来的数据用utf-8,如果是windows则用gbk f1 = open(fullname, encoding='gbk') for i in

linux下查找文件及文件内查找内容--find/grep/sed/awk

1.find 查找到想要的文件或目录 格式:find  [path]   [-OPTION]  [-exec |grep  |xargs   -ok  -print   | ……]   [command  {} \;] 参数: -type    以类型查找 f    文件 d   目录 -name    以文件名查找 -size    根据问价大小来查找.eg:  find /data -size 5M -perm    根据文件权限查找.  eg: find /data -perm 755 -

替换APK文件内容后重新打包签名脚本

由于业务需求,需要替换APK文件内容后重新打包签名,调研后发现使用JDK里提供的命令可以很方便地实现.关键命令如下: jar -uf:替换apk文件内的某个文件或文件夹. jarsigner:为apk文件签名 zipalign:对签名后的apk文件进行字节对齐优化 下面以替换某apk包中assets目录下的1.ini和2.ini文件,并重新打包签名优化为例,先放上脚本代码: start.bat(windows版本) SET KEYSTORE_NAME=.\data\signature.keyst

统计一个文件英文单词的个数

/* 统计一个文件内,英文单词的个数,并按 word = count的格式顺序输出 统计输出总的英文单词个数 */ #include <fstream> #include <iostream> #include <string> #include <vector> #include <algorithm> using namespace std; int main(){ string line; //打开输入文件 ifstream input(&

Java关于条件判断练习--统计一个src文件下的所有.java文件内的代码行数(注释行、空白行不统计在内)

要求:统计一个src文件下的所有.java文件内的代码行数(注释行.空白行不统计在内) 分析:先封装一个静态方法用于统计确定的.java文件的有效代码行数.使用字符缓冲流读取文件,首先判断是否是块注释开头,接着判断是否是块注释结尾,再判断是否是单行注释或者空白行,若都不是则是有效代码,统计行数+1. 对于文件夹路径,采用递归的方法判断子条目是文件还是文件夹,是文件就调用静态统计方法.源代码: public class CalculateRow { public static void main(

【Java】利用文件输入输出流完成把一个文件夹内的所有文件拷贝的另一的文件夹的操作

一.基本目标 使用Java完成如下的操作: 把一个文件夹内的所有文件拷贝的另一的文件夹,例如,在F盘中有a与b两个文件夹: f:/a里面有一堆文件,运行Java程序之后就会全部复制到f:/b,并且完成重命名,在所有文件之前加rename_的前缀,如果里面有文件夹,则文件夹不重命名,里面的文件进行重命名,同样在所有文件之前加rename_的前缀: 二.制作过程 1.首先主函数非常简单,就是调用了上面FileTest类中的copyFolder函数 public class FileCopy { pu

Java学习(4):统计一个文件中的英文,中文,数字,其他字符以及字符总数

要求:统计一个文件中的英文,中文,数字,其他字符以及字符总数(此随笔以txt文件为例) import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStreamReader; /** * 将一个文件中英文,中文,数字,其