1.假设有一个txt文档 里面内容为一些文件的完整目录 ,求找出里面出现重复的目录
2.假设有一个txt文档 里面内容为一些文件的完整目录,根据目录获取文件,如何在那些文件内容尾部批量加上一些空格进行批量修改

解决方案 »

  1. 文本文件里每行一个目录的话,很简单,直接读文件内容然后比较字符串就好。第二条的话也一样的。学习下java.io.*这个包就好了。
      

  2. 睡觉前打完的,看了一下也有80多行呀。没有仔细测试不知道有BUG没
    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.InputStreamReader;
    import java.io.PrintStream;
    import java.util.ArrayList;
    import java.util.HashSet;
    import java.util.List;
    import java.util.Set;public class FindRepeatFile { private List<String> loadTxt(String pathName) throws Exception{
    File file = new File(pathName);
    if(file.exists()) {
    BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(file)));
    List<String> list = new ArrayList<>();
    String str = null;
    while((str = br.readLine()) != null) {
    list.add(str);
    }
    br.close();
    return list;
    }
    return null;
    }

    private Set<String> getRepeatFile(List<String> list) {
    if(list != null) {
    Set<String> set = new HashSet<>();
    for(int i=0; i<list.size(); i++) {
    String str = list.get(i);
    for(int j=i+1; j<list.size(); j++) {
    if(str.equalsIgnoreCase(list.get(j))) {
    set.add(str);
    }
    }
    }
    return set;
    }
    return null;
    }

    public final static String UPDATE_CONTENT = "hello world!";
    private void updateFiles(List<String> list) throws Exception{
    if(list == null)
    return;
    for(String l: list) {
    File file = new File(l);
    if(file.exists()) {
    PrintStream out = new PrintStream(new FileOutputStream(file, true));
    out.println(UPDATE_CONTENT);
    out.close();
    }
    }
    }

    public Set<String> getRepeatFile(String pathName) {
    try {
    List<String> list = loadTxt(pathName);
    return getRepeatFile(list);
    } catch (Exception e) {
    e.printStackTrace();
    }
    return null;
    }

    public void updateFiles(String pathName) {
    try {
    List<String> list = loadTxt(pathName);
    updateFiles(list);
    } catch (Exception e) {
    // TODO: handle exception
    }
    }

    public static void main(String[] args) {
    FindRepeatFile frf = new FindRepeatFile();
    // Set<String> set = frf.getRepeatFile("E:\\test\\aaaa.txt");
    // for(String s: set) {
    // System.out.println(s);
    // }
    frf.updateFiles("E:\\test\\aaaa.txt");
    }
    }
      

  3. (1)如果每个路径有结束符就好办,取一个路径装在Set集合里..去重复后再重新写入
    (2)把文本内容搞到输入流,在输入流加几个空格,再重新写入.
      

  4. 1)取出的每一行用Set.add方法放在set中,返回值是false说明有重复。
    2)读文件再写文件
      

  5. LZ根本就没有给出这个txt的格式,鬼知道你的txt是怎么写的,,
      

  6. 1.第一个可以把目录获取用String引用,然后放到list中去,最后再次读取获取目录,然后去list 中比较
       不知可行否?
      

  7. 你可以吧txt格式说明下,比如:c:/a.txt;c:/f1/a1.txt;
      

  8. 一来,io流平常工作中用的不多,二来,你描述的不是很清楚,你的txt都是什么规则的内容没有说清楚
    虽然,io读写操作是java的基础部分,所以我也只有用嘴说说了。第一个要求,说白了就是字符串的拆分。java中的拆分无非就几个方法的组合应用。indexOf、substring、split等。
    真对你的第一个找出重复的目录,我的思路会是先根据你txt内容规则进行拆分一下, 使用map取出重复,然后使用indexOf和lastIndexOf判读重复,出现的位置一样就是唯一的,否则就是有重复。第二个要求,就是java读写文件,google一下代码,一大堆,甚至好多拷贝过来了就能用。根据拆分出来的目录读、写,在写入的结束时添加一点你自己的内容,这样就成了修改。
      

类似问题 »