利用java io操作多个文件

问题描述

利用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
…………
大神求解

解决方案

第一种合并方式比较简单,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();
        }
    }
}

解决方案二:

读取两个文件,分别装入两个arraylist,然后循环根据需要得到你要的。
分别是两重循环。

解决方案三:

在二楼基础上补充一楼:
/*****
* @author :QZC
* @createDate :2016年1月7日 上午9:15:01
* 函数功能描述:读取两个文件分别装入list,合并输入
* @param source
* @param target
* @param dist
* @throws IOException
*****/
public static void mergeLine(String source,String target,String dist) throws IOException{
File file = new File(target);
BufferedReader reader = new BufferedReader(new FileReader(file));

StringBuffer buffer = new StringBuffer();
buffer.append(" ");
String value = reader.readLine(); //读取行内容
List blist=new ArrayList(); //b集合
while(value!=null){
blist.add(value);
value = reader.readLine();
}
reader.close();

    List<String> alist=new ArrayList<String>();  //a集合
    file = new File(source);
    reader = new BufferedReader(new FileReader(file));
    String aValue=reader.readLine();
    while(aValue!=null){
        alist.add(aValue);
        aValue=reader.readLine();
    }
    reader.close();

    //逐行写入C文件,组合a文件一行+b文件一行
    BufferedWriter bw = new BufferedWriter(new FileWriter(dist));
    for(String a:alist){
       for(String b:blist){
            bw.write(a+" "+b);
            bw.newLine();
        }
        bw.newLine(); //(可有可无,不过为了格式好看还是加上)
    }
    bw.flush();
    bw.close();
}

解决方案四:

补充:忘记删除了这两句代码
StringBuffer buffer = new StringBuffer();
buffer.append(" ");

解决方案五:

java文件IO操作
java io操作文件
java IO 文件操作

时间: 2024-07-28 22:58:49

利用java io操作多个文件的相关文章

在java.io中怎么实现文件内容的部分修改

问题描述 我只能全部读取,然后保存在list里面,然后对特定行修改,然后在全部写入,可是这么写,如果数据太多的话,就费时了,怎么实现部分修改啊?就是不对特定行以后的数据进行遍历,并且保证原有的未修改数据不被覆盖. 解决方案 使用java.io.RandomAccessFile,可以随机读取文件.

利用JAVA做C/S IM 文件传输部分出问题nullpointerexception

问题描述 最近在做课程设计做到文件传输时候遇到这样问题:两个客户端.服务器都开了能够进行文字谈话但想传送文件时候A客户端发文件到B时B没有反应,显示connectiontimedout:connectExceptioninthread"Thread-3"java.lang.NUllpointerExceptionat(后面内容是语句位置)//*********启动文件传输线程管理文件传输privateclassThreadfsentextendsThread{Socketsocketf

replace-利用java io逐行操作文件并替换内容

问题描述 利用java io逐行操作文件并替换内容 A文件: as1 dfg1 hjkl1 逐行读取A文件的内容,将1替换成 一 后将替换后的内容写到B文件中 解决方案 BufferedReader readBuffer = new BufferedReader(new FileReader( new File("D:/aaaa.txt"))); BufferedWriter write = new BufferedWriter(new FileWriter(new File(&quo

Java IO流 文件传输基础_java

一.文件的编码 package com.study.io; /** * 测试文件编码 */ public class EncodeDemo { /** * @param args * @throws Exception */ public static void main(String[] args) throws Exception { String s="好好学习ABC"; byte[] bytes1=s.getBytes();//这是把字符串转换成字符数组,转换成的字节序列用的是

在Java中操作Zip文件,压缩/解压

压缩 可随意转载,但请注明出处及作者SonyMusic2003.05.28==========================================================================在Java中操作Zip文件,压缩/解压 package test.nothing; import java.io.*;import java.util.*;import java.util.zip.*; import com.beaconsystem.util.*; impor

mapreduce,java处理操作文件

问题描述 mapreduce,java处理操作文件 A文件 1 q*a*z 2 w*s*x B文件 1 q 1 a 1 z 2 w 2 s 2 x 利用java代码怎么把A文件转变成B文件 解决方案 找到转换规律之后,然后就是读取A文件, 逐行读取readLine(),先用split("空格")将这一行数据进行分割,正常情况能分割成两条记录,然后再对第二条记录进行分割split("星号") 然后写入文件B中.这个需求还是很简单的.如果你熟悉文件操作的话,大概的伪代码

Java编程那些事儿88——文件操作之写文件

11.3.1.4 写文件 如前所述,将程序内部的数据输出到程序外部的数据源,应该使用IO类体系中的输出流.在实际的编程中,将程序中的数据,例如用户设定或程序运行时生成的内容,存储到外部的文件中,应该使用输出流进行编程. 基本的输出流包含OutputStream和Writer两个,区别是OutputStream体系中的类(也就是OutputStream的子类)是按照字节写入的,而Writer体系中的类(也就是Writer的子类)是按照字符写入的. 使用输出流进行编程的步骤是: 1.建立输出流 建立

Java编程那些事儿87——文件操作之读取文件

11.3.1.3 读取文件 虽然前面介绍了流的概念,但是这个概念对于初学者来说,还是比较抽象的,下面以实际的读取文件为例子,介绍流的概念,以及输入流的基本使用. 按照前面介绍的知识,将文件中的数据读入程序,是将程序外部的数据传入程序中,应该使用输入流--InputStream或Reader.而由于读取的是特定的数据源--文件,则可以使用输入对应的子类FileInputStream或FileReader实现. 在实际书写代码时,需要首先熟悉读取文件在程序中实现的过程.在Java语言的IO编程中,读

JSP文件操作例程 - 读文件

js <%--作者:何志强[hhzqq@21cn.com]日期:2000-08-07版本:1.0功能:JSP文件操作例程 - 读文件--%> <%@ page contentType="text/html;charset=gb2312"%> <%//变量声明java.lang.String strFileName;     //文件名java.io.File objFile;             //文件对象java.io.FileReader obj