2012-05-14 39 views
5

Tôi hiện đang làm việc trong một phòng thí nghiệm trong lớp cpe của mình và chúng tôi phải tạo một chương trình đơn giản quét chuỗi từ tệp .txt và bản in chúng vào một tệp .txt khác. Cho đến nay tôi có chương trình cơ bản được rút ra nhưng ngoại lệ của tôi tiếp tục bị ném dù tôi có tất cả các tệp cần thiết. Bất cứ ai có thể giúp tôi gỡ lỗi?File I/O: Đọc từ một tập tin và viết sang một tệp khác (Java)

import java.io.*; 
import java.util.*; 

public class FileIO { 

public static void main(String args[]) {   
    try { 
     File input = new File("input"); 
     File output = new File("output"); 
     Scanner sc = new Scanner(input); 
     PrintWriter printer = new PrintWriter(output); 
     while(sc.hasNextLine()) { 
      String s = sc.nextLine(); 
      printer.write(s); 
     } 
    } 
    catch(FileNotFoundException e) { 
     System.err.println("File not found. Please scan in new file."); 
    } 
} 
} 
+1

vào/đầu ra tập tin của bạn không có phần mở rộng? – apnorton

+1

Anh ta đã nói chúng là các tệp .txt ... vậy có vẻ như đó là vấn đề. Một chút lời khuyên cho bất kỳ máy tính nào bạn định lập trình trên: đặt trình duyệt tệp của bạn để luôn hiển thị tiện ích mở rộng tệp. – Tharwen

+0

Đừng quên đóng máy quét và người viết. –

Trả lời

4

Bạn cần tìm ra vị trí tìm kiếm tệp "input". Khi bạn chỉ cần chỉ định "input", hãy tìm tệp trong thư mục làm việc hiện tại hiện tại. Khi làm việc với một IDE, thư mục này có thể không phải là những gì bạn nghĩ.

Hãy thử như sau:

System.out.println(new File("input").getAbsolutePath()); 

để xem nơi nó sẽ tìm kiếm các tập tin.

+0

Cảm ơn !! Hóa ra các tệp .txt của tôi nằm trong thư mục sai. Vì vậy, nó tìm kiếm chúng nhưng bây giờ nó không phải là viết từ input.txt của tôi để output.txt của tôi. Output.txt vẫn còn trống. – Mike

+0

* Đó là * vì bạn không gọi tuôn ra. Tôi đề nghị bạn gọi printer.close() khi bạn đã hoàn tất (nó sẽ xóa nó cho bạn). – aioobe

+0

Cảm ơn !! Nó hoạt dộng bây giờ! Tôi đóng máy quét nhưng không phải máy in. – Mike

3

Khi truy cập tệp bằng Java I/O, bạn phải bao gồm đuôi tệp của tệp (nếu có).

File input = new File("input.txt"); 
    File output = new File("output.txt"); 
+0

Tôi đã có phần mở rộng .txt trước và tôi vẫn sẽ ném ngoại lệ của mình. Tôi đang sử dụng nhật thực và các tập tin .txt nằm trong src fold cùng với các tập tin .java của tôi. – Mike

+0

Tôi đã thêm các phần mở rộng trở lại và di chuyển các tập tin vào thư mục chính xác nhưng bây giờ mỗi khi tôi chạy chương trình của tôi, output.txt của tôi được cập nhật nhưng khi tôi mở nó lên vẫn không có gì trong đó. – Mike

2

Có thể bạn chỉ là quên flush()

 try { 
      File input = new File("input"); 
      File output = new File("output"); 
      Scanner sc = new Scanner(input); 
      PrintWriter printer = new PrintWriter(output); 
      while (sc.hasNextLine()) { 
       String s = sc.nextLine(); 
       printer.write(s); 
      } 
      **printer.flush();** 
     } 
     catch (FileNotFoundException e) { 
      System.err.println("File not found. Please scan in new file."); 
     } 
+0

Anh ta nói rằng anh ta bị ngoại lệ. – aioobe

+0

@aioobe ngoại lệ của bạn là gì? – isvforall

+0

* I * không có ngoại lệ, * Mike * (người đã đăng câu hỏi) có. – aioobe

0

Chúng ta có thể làm điều này bằng cách đọc các tập tin sử dụng FileInputStream đối tượng và viết vào một tập tin sử dụng FileOutputStream đối tượng.

Đây là đoạn mã mẫu

package java_io_examples; 
import java.io.FileInputStream; 
import java.io.FileOutputStream; 
import java.util.Vector; 

public class Filetest { 

    public static void main(String[] args) { 

    try { 

      FileInputStream fin = new FileInputStream("D:\\testout.txt"); 

      int i = 0; 
      String s = ""; 

      while((i=fin.read())!=-1) { 

       s = s + String.valueOf((char)i); 

      } 

      FileOutputStream fout = new 
      FileOutputStream("D:\\newtestout1.txt"); 
      byte[] b = s.getBytes(); 

      fout.write(b); 
      fout.close(); 

      System.out.println("Done reading and writing!!"); 

     } catch(Exception e){ 
     System.out.println(e); 
     } 

    } 

} 
0
public void readwrite() throws IOException 
{ 
    // Reading data from file 
    File f1=new File("D:/read.txt"); 
    FileReader fr=new FileReader(f1); 
    BufferedReader br=new BufferedReader(fr); 

    String s = br.readLine(); 

    // Writing data 
    File f2=new File("D:/write.txt"); 
    FileWriter fw=new FileWriter(f2); 
    BufferedWriter bw=new BufferedWriter(fw); 
    while(s!=null) 
    { 
     bw.write(s); 
     bw.newLine(); 
     System.out.println(s); 
     s=br.readLine(); 

    } 
    bw.flush(); 
    bw.close(); 

} 
Các vấn đề liên quan