2013-07-15 87 views
0

這裏介紹java class tard。我試圖從一個文件讀取數據,然後操縱到一個不同的文件並保存。我認爲我很接近,但有問題一起使用掃描儀和.IO。任何幫助都會很棒。如何從文件讀取數據並將其放入變量並輸出到不同的文件。 Java

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

public class fileswitch 
{ 

    public static void main(String[] Args) throws IOException 
    { 
     String filename; 
     String filename2; 
     String text; 

     Scanner keyboard = new Scanner(System.in); 

     System.out.print("Enter the name of a file: "); 
     filename = keyboard.nextLine(); 

     PrintWriter outputFile = new PrintWriter(filename); 

     System.out.print("Enter the name of a second file: "); 
     filename2 = keyboard.nextLine(); 

     PrintWriter outputFile2 = new PrintWriter(filename2); 

     while (filename.hasNextLine()) 
     { 
      text = filename.readAllLines(); 
      text = text.toUpperCase(); 
      outputFile2.print(text); 
      outputFile2.close(); 
     }  

    } 
} 

回答

0

嘗試使用BufferedReader

BufferedReader pw = new BufferedReader(new FileReader(fileName)); 
String s = null; 
s = pw.readLine(); 

工作實例

public static void main(String[] args) throws IOException { 
     Scanner keyboard = new Scanner(System.in); 
     String filePath = keyboard.next(); 

     BufferedReader bufferedReader = new BufferedReader(new FileReader(filePath)); 

     String line = bufferedReader.readLine(); 
     System.out.println(line); 
    } 

在控制檯上輸入路徑

C:\Users\path\Desktop\1.txt 

您可以使用PrintWriter

PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter(fileName2))); 
0

您的代碼不編譯。

while (filename.hasNextLine()) // String#hasNextLine() does not exist 

hasNextLine()屬於Scanner這是不被用於讀取文件,但是從鍵盤只是你的控制檯按鍵。

如果您打算在那裏使用outputFile;由於您不能使用PrintWriter作爲文件讀取器,因此無法工作。那麼,這種名字就是明顯的。不是嗎?

但是,除非格式化輸出,否則您應該避免使用PrintWriter進行書寫。對於普通字符輸出,首選FileWriter(包含在BufferedWriter之內以獲得性能)。同樣,對於閱讀文件,首選FileReader(再次包含在BufferedReader內)。

這裏是你的代碼是什麼樣子:

public static void main(String[] Args) throws IOException 
{ 
    // create the scanner for console 
    Scanner keyboard = new Scanner(System.in); 

    // read the input/output file names 
    System.out.print("Enter the name of a file: "); 
    String inFile = keyboard.nextLine(); 

    System.out.print("Enter the name of a second file: "); 
    String outFile = keyboard.nextLine(); 

    // close the scanner 
    keyboard.close(); 

    // open file streams 
    BufferedReader reader = new BufferedReader(new FileReader(inFile)); 
    BufferedWriter writer = new BufferedWriter(new FileWriter(outFile)); 

    // copy the data (line by line) 
    String text = null; 
    while ((text = reader.readLine()) != null) 
    { 
     writer.write(text); 
     writer.newLine(); 
    } 

    // close the file streams 
    reader.close(); 
    writer.close(); 
} 
3

也可以用於創建一個新的文件

package test; 

import java.io.File; 
import java.io.IOException; 

import org.apache.commons.io.FileUtils; 

public class WriteStringToFile { 

    public static void main(String[] args) throws IOException { 
     String string = "This is\na test"; 
     File file = new File("test.txt"); 
     FileUtils.writeStringToFile(file, string); 
    } 
} 

這是一個很好的做法,因爲你沒有關閉流。

這會產生與預期輸出使用現有的解決方案,以一個共同的問題,而不是你自己發明的

+0

+1很好的例子test.txt文件。 – Brandon

相關問題