在java中写入文本文件

时间:2014-03-24 09:36:41

标签: java string file file-io

我有一个包含大量单词的文本文件,我希望通过每4个单词写**来划分单词。 我到目前为止所做的是添加第一个**(前4个单词),并且在放置其他星星时遇到一些困难。

这是我的代码,直到现在(我正在使用java)

import java.io.*;

public class Insert {

 public static void main(String args[]){
     try {
       INSERT In = new INSERT();
       int tc=4;

       In.insertStringInFile (new File("D:/Users//im080828/Desktop/Souad/project/reduction/weight/outdata/d.txt"), tc, "**");
       }
     catch (Exception e) {
       e.printStackTrace();
       }
 }


 public void insertStringInFile(File inFile, int lineno, String lineToBeInserted) 
   throws Exception {
 // temp file
 File outFile = new File("$$$$$$$$.tmp");

 // input
 FileInputStream fis  = new FileInputStream(inFile);
 BufferedReader in = new BufferedReader
     (new InputStreamReader(fis));

 // output         
 FileOutputStream fos = new FileOutputStream(outFile);
 PrintWriter out = new PrintWriter(fos);

 String thisLine = "";
 int i =1;
 while ((thisLine = in.readLine()) != null) {
   if(i == lineno) out.println(lineToBeInserted);
   out.println(thisLine);
   i++;
   }
out.flush();
out.close();
in.close();

inFile.delete();
outFile.renameTo(inFile);
 }
}

请给我一些想法

谢谢:)

1 个答案:

答案 0 :(得分:2)

当你执行if (i == lineno)时,你只会得到真if (i==4),所以你的行为是正常的。您需要使用模运算符if ((i % lineno) == 0)来获取每个行的星形。 http://www.dreamincode.net/forums/topic/273783-the-use-of-the-modulo-operator/