寂寞不孤单 2016-01-06 14:40 采纳率: 16.7%
浏览 1636
已采纳

利用java io操作多个文件

A文件:
A
B
C
D
B文件:
1
2
3
4
利用java io操作A B 文件,得出
C文件:
A 1234
B 1234
C 1234
D 1234

或者
A 1
A 2
A 3
A 4
B 1
B 1
B 2
B 3
B 4
…………
大神求解

  • 写回答

4条回答 默认 最新

  • 毕小宝 博客专家认证 2016-01-06 23:38
    关注

    第一种合并方式比较简单,A文件的逐行+B文件的全部内容,所以可以这样实现:先将B文件读入内存中存入中间变量中,然后逐行遍历A文件写入C文件。
    参考实现如下,合并时注意添加必要的空格:

     import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.File;
    import java.io.FileReader;
    import java.io.FileWriter;
    import java.io.IOException;
    
    public class FileMerge {
        /**
         * 将源文件和目标文件的内容逐行合并后输出到第三个文件中
         * 合并方式是source 中的每一行+target中所有行
         * 实现方式,先将target全部读入内存,然后逐行遍历source拼接目标内容后写入dist,
         * @param source
         * @param targte
         * @param target
         * @throws IOException 
         */
        public static void merge(String source,String target,String dist) throws IOException{
             //先读取target的内容存入临时变量
             File file = new File(target);
             BufferedReader reader = new BufferedReader(new FileReader(file));
             StringBuffer buffer = new StringBuffer();
             buffer.append(" ");
             String value = reader.readLine();
             while(value!=null){
                 buffer.append(value).append(" ");
                 value = reader.readLine();
             }
             reader.close();
             String targetContent = buffer.toString();
    
             //逐行读取source,组合目标文件source一行+target整个文件内容
             BufferedWriter bw = new BufferedWriter(new FileWriter(dist));
             file = new File(source);
             reader = new BufferedReader(new FileReader(file));
             value = reader.readLine();
             while(value!=null){
                 bw.write(value+targetContent);
                 bw.newLine();
                 value = reader.readLine();
             }
             bw.flush();
             bw.close();
        }
    
        public static void main(String[] args) {
            String a = "src/A.txt";
            String b = "src/B.txt";
            String c = "src/C.txt";
            try {
                merge(a,b,c);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 用visual studi code完成html页面
  • ¥15 聚类分析或者python进行数据分析
  • ¥15 逻辑谓词和消解原理的运用
  • ¥15 三菱伺服电机按启动按钮有使能但不动作
  • ¥15 js,页面2返回页面1时定位进入的设备
  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?