的Java输出编号行格式化

问题描述:

我的工作,要求请求文件名的任务,然后拿文件和输出它与编号行格式化像一个.txt文件:的Java输出编号行格式化

[001]

[002]

我已经把碎片磨碎在一起,让程序工作,但我似乎无法得到它以要求的格式写入。任何帮助,将不胜感激。

这是我的代码到目前为止。

try { 

     System.out.println("Enter your source code file name: "); 
     Scanner scanner = new Scanner(System.in); 
     String file = scanner.nextLine(); 

     in = new FileInputStream(file); 
     out = new FileOutputStream(file + ".txt"); 

     int c; 
     while ((c = in.read()) != -1) { 
      out.write(c); 
     } 

    } catch (IOException e) { 
     System.out.println("Error!"); 

    } 
+0

你笑uldn't阅读,并在同一时间写入一个文件,这是更好地阅读,做内存的更改,然后将其写入文件 – Draken

+0

@Draken他们是不一样的文件... – assylias

+0

好一点,错过了附加.txt。 而不是使用'FileInputStream',应该更好地使用'BufferedReader'和'FileReader'。这可以轻松读取线条。 [检查这里的例子](http://*.com/questions/5868369/how-to-read-a-large-text-file-line-by-line-using-java)。目前最大的问题是你正在逐字阅读一行字符,这是缓慢而困难的。有更好的技术人员可以一次阅读整行文本,而不需要完成这项工作 – Draken

尝试

BufferedReader in = new BufferedReader(new FileReader(fileName)); 
BufferedWriter out = new BufferedWriter(new FileWriter(fileName + '.txt'); 
String line; 
while ((line = in.read()) != -1) { 
    counter++; 
    out.write(String.format(..., counter, line)+"\r\n"); 
} 

有关String.format()方法看附加信息使用的BufferedReader/BufferedWriter将读取和写入你的文字线条就像这样简单:

String txtName = "test"; 
    String txtNumbered = "test1"; 
    try 
    { 
     BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(txtName+".txt"))); 
     BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(txtNumbered+".txt"))); 
     int count = 0; 

     String line = br.readLine(); 
     while(line != null) 
     { 
      count++; 
      bw.write(count+" "+line+"\r\n"); 
      line = br.readLine(); 
     } 

     br.close(); 
     bw.close(); 

    }catch(IOException e) 
    { 
     System.out.println(e); 
    } 
+0

请注意,您没有提供OP的完整答案,请记住它是一个家庭作业问题,所以他们确实需要做一些调查! – Draken

+0

我应该删除这个回答吗?我是新来的,我很感谢你的指导。 – theVoid

+1

我认为他们已经从之前的答案中发现了它,尽管它不那么直观,因为它们强迫它们使用String.format()(它们应该学习它们)。留下你的答案,只是考虑到下次 – Draken

你只需要一个计数器来算你行:在这个link