2014-05-10 3 views
-2

поэтому я делаю приложение java, чтобы найти все java-файлы в каталоге и затем объединить их в один файл, который будет помещен в тот же каталог, но я не могу получить конкатенацию правильно. Вот что я сделал до сих пор, надеюсь, вы, ребята, можете мне помочь, поскольку я пробовал разные вещи, но все равно не могу понять. Благодаря!конкатенировать файлы .java в java

import java.io.File; 
import java.io.FileFilter; 
import java.io.FileReader; 
import java.io.FileWriter; 
import java.io.IOException; 


public class FileConcatenate { 

    public static void main(String[] args) { 
     String dirName = args[0]; 
     String fileName = args[1]; 
     File dirFile = new File("C:\\Users\\Michael\\Desktop\\" + dirName + ""); 
     File file = new File("C:\\Users\\Michael\\Desktop\\" + dirName + "\\" + fileName + ".java"); 
     FileFilter filter = new FileFilter(){ 
      public boolean accept(File pathname){ 
       if(pathname.getName().contains(".java")){ 
        return true; 
       }else{ 
        return false; 
       } 
      } 
     }; 
     try{ 
      if(!dirFile.exists()){ 
       System.out.println("There is no directory with that name"); 
      } 
      File[] javaFile = dirFile.listFiles(filter); 
      if(!file.exists()){ 
       file.createNewFile(); 
      } 
      FileWriter fw = new FileWriter(file, true); 
      for(File f : javaFile){ 
       FileReader fr = new FileReader(f); 
       fw.write(fr.read()); 
       fr.close(); 
      } 
      fw.flush(); 
      fw.close(); 

     }catch(IOException e){ 
      e.printStackTrace(); 
     } 

    } 

} 
+0

'но я не могу понять, что конкатенация правильная. Почему бы и нет? Что происходит не так? – John3136

+1

Чтение javadoc помогает: http://docs.oracle.com/javase/7/docs/api/java/io/InputStreamReader.html#read%28%29 –

+0

Начните с основ, прочитайте содержимое одного файла и напишите его в другой файл. –

ответ

0

Сделайте это. Для получения дополнительной информации читайте встроенные комментарии.

... 
FileWriter fw = new FileWriter(file, true); 
for (File f : javaFile) { 
    FileReader fr = new FileReader(f); 
    // read 1000 chars at a time from source file 
    char[] cbuf = new char[1000]; 
    int count = -1; 
    // iterate till the end of source file 
    // here count represent the no of chars read at a time 
    while ((count = fr.read(cbuf)) != -1) { 
     // write in the targeted file 
     fw.write(cbuf, 0, count); 
    } 
    fr.close(); 
} 
... 

В вашем случае fw.write(fr.read()); не делать то, что вы ожидаете.

Он просто прочитал один символ из исходного файла и записал его в целевой файл.

Для получения дополнительной информации см. InputStreamReader#read(), что читает один символ.

+0

ahh да это работает, спасибо большое! Сейчас я буду читать больше о потоках – Michael

Смежные вопросы