8

D:\ 1.txt D:\ 2.txt D:\ 3.txtとD:\4.txtのようないくつかの場所に4つの異なるファイルがあります

NewFile.txtとして新しいファイルを作成する必要があります。これには、上記のファイル1.txt、2.txt、3.txt4.txt...に含まれるすべてのコンテンツが含まれている必要があります。

すべてのデータは、新しい単一ファイル(NewFile.txt)に存在する必要があります。

javaやGroovyでも同じことをするアイデアを教えてください。

4

7 に答える 7

10

Groovy でそれを行う 1 つの方法を次に示します。

// Get a writer to your new file
new File( '/tmp/newfile.txt' ).withWriter { w ->

  // For each input file path
  ['/tmp/1.txt', '/tmp/2.txt', '/tmp/3.txt'].each { f ->

    // Get a reader for the input file
    new File( f ).withReader { r ->

      // And write data from the input into the output
      w << r << '\n'
    }
  }
}

(各ソース ファイルを呼び出すよりも) この方法で行う利点はgetText、ファイルの内容を に書き出す前に、ファイル全体をメモリにロードする必要がないことnewfileです。ファイルの 1 つが巨大な場合、他の方法は失敗する可能性があります。

于 2012-10-25T10:09:46.103 に答える
3

これはグルーヴィーです

def allContentFile = new File("D:/NewFile.txt")
def fileLocations = ['D:/1.txt' , 'D:/2.txt' , 'D:/3.txt' , 'D:/4.txt']
fileLocations.each{ allContentFile.append(new File(it).getText()) }
于 2012-10-25T10:20:32.333 に答える
1

私はこれを解決しようとしましたが、内容を配列にコピーして配列を別のファイルに書き込むと、非常に簡単であることがわかりました

public class Fileread 
{

public static File read(File f,File f1) throws FileNotFoundException
{

    File file3=new File("C:\\New folder\\file3.txt");
    PrintWriter output=new PrintWriter(file3);
    ArrayList arr=new ArrayList();
    Scanner sc=new Scanner(f);
    Scanner sc1=new Scanner(f1);
    while(sc.hasNext())
    {
        arr.add(sc.next());

    }
     while(sc1.hasNext())
    {
        arr.add(sc1.next());

    }
       output.print(arr);
   output.close();

    return file3;
}
/**
 *
 * @param args
 * @throws FileNotFoundException
 */
public static void main(String[] args) {
    try
    {
   File file1=new File("C:\\New folder\\file1.txt");
   File file2=new File("C:\\New folder\\file2.txt");
   File file3=read(file1,file2);
   Scanner sc=new Scanner(file3);
   while(sc.hasNext())
       System.out.print(sc.next());

    }
    catch(Exception e)
    {
        System.out.printf("Error  :%s",e);
    }
}
}
于 2014-03-03T19:42:58.960 に答える
1

Javaで行う方法を示しています:

public class Readdfiles {
  public static void main(String args[]) throws Exception
  {
    String []filename={"C:\\WORK_Saurabh\\1.txt","C:\\WORK_Saurabh\\2.txt"};
    File file=new File("C:\\WORK_Saurabh\\new.txt");
    FileWriter output=new FileWriter(file);
    try
    {   
      for(int i=0;i<filename.length;i++)
      {
        BufferedReader objBufferedReader = new BufferedReader(new FileReader(getDictionaryFilePath(filename[i])));

        String line;
        while ((line = objBufferedReader.readLine())!=null )
        {
          line=line.replace(" ","");

          output.write(line);
        }
        objBufferedReader.close();
      }
      output.close();
    }
    catch (Exception e) 
    {
      throw new Exception (e);
    }
  }

  public static String getDictionaryFilePath(String filename) throws Exception
  {
    String dictionaryFolderPath = null;
    File configFolder = new File(filename);
    try 
    {
      dictionaryFolderPath = configFolder.getAbsolutePath();
    } 
    catch (Exception e) 
    {
      throw new Exception (e);
    }
    return dictionaryFolderPath;
  }
}

疑問がある場合は教えてください

于 2012-10-25T10:28:47.773 に答える
0

1つのライナーの例:

def out = new File(".all_profiles")
['.bash_profile', '.bashrc', '.zshrc'].each {out << new File(it).text}

また

['.bash_profile', '.bashrc', '.zshrc'].collect{new File(it)}.each{out << it.text}

大きなファイルがある場合は、Timの実装の方が優れています。

于 2012-10-25T12:11:02.653 に答える
0

Java では、このようなことができます。問題の解決に役立つことを願っています:

import java.io.*;
class FileRead {
public void readFile(String[] args) {
for (String textfile : args) {

try{
      // Open the file that is the first 
      // command line parameter
      FileInputStream fstream = new FileInputStream(textfile);
      // Get the object of DataInputStream
      DataInputStream in = new DataInputStream(fstream);
      BufferedReader br = new BufferedReader(new InputStreamReader(in));
      String strLine;
      //Read File Line By Line
      while ((strLine = br.readLine()) != null)   {
      // Print the content on the console
      System.out.println (strLine);

    // Write to the new file
      FileWriter filestream = new FileWriter("Combination.txt",true);
      BufferedWriter out = new BufferedWriter(filestream);
      out.write(strLine);
      //Close the output stream
      out.close();

      }
      //Close the input stream
      in.close();
        }catch (Exception e){//Catch exception if any
      System.err.println("Error: " + e.getMessage());
      }
}
}

 public static void main(String args[]) {
 FileRead myReader = new FileRead();
 String fileArray[] = {"file1.txt", "file2.txt", "file3.txt", "file4.txt"};
    myReader.readFile(fileArray);

  }
}
于 2012-10-25T10:40:47.147 に答える