![](/img/trans.png)
[英]Can someone tell me what I'm doing wrong to setup this Robot class in Java?
[英]Can someone tell me what this Java class does? I/O related
我是Java的新手,嘗試學習I / O語法。 有人可以概述一下此代碼的作用嗎? 謝謝!!
import java.io.*;
public class FileReader {
private String openFile="";
private String saveFile="";
FileReader(openFile, saveFile)
{
this.openFile=openFile;
this.saveFile=saveFile;
}
public String process(){
System.out.println(this.openFile);
System.out.println(this.saveFile);
BufferedReader open=null;
FileReader openFR=null;
FileWriter save=null;
int counter=0;
String output="";
if(openFile.equals("")){
return "No open file specifified\n";
}
if(this.saveFile.equals("")){
return "No save file specified\n";
}
try {
openFR = new FileReader(this.openFile);
open = new BufferedReader(openFR);
} catch (FileNotFoundException e) {
return ("Open file no longer exists\n");
}
try {
save = new FileWriter(saveFile);
}
catch (IOException e){
return ("Error saving the file\n");
}
try{
String temp = open.readLine();
while(temp != null){
temp = open.readLine();
counter++;
save.write(output + "\n");
}
} catch (IOException e){
e.getStackTrace();
return ("Error reading open file");
}
try {
save.flush();
} catch (IOException e) {
e.printStackTrace();
return ("Error writing save file");
}
return "Operation completed successfully";
}
}
這是一個很好的例子,說明如何不編碼!
一些問題:
因為output
始終為""
,所以將新行的counter
編號寫入saveFile。 我猜它可能會將一個文件復制到另一個文件,但是應該有save.write(temp + "\\n");
這樣做。
它打開兩個文件,然后(如果兩個文件都存在並且可以打開),從第一個文件讀取行,並
以無窮循環
將空行寫入第二個文件
,
直到到達第一個文件的末尾。
它不會關閉任何文件。
它嘗試復制文本文件,但似乎有一些錯誤。
這是Java I / O教程的鏈接。 如果您想使用Java I / O,那么這是最好的起點。
您粘貼的代碼嘗試一次將源文件復制到一個新的目標文件中,但是其中包含的錯誤會阻止這種情況的發生,即:
對我來說,這段代碼除了拋出很多編譯時錯誤外,什么也不做。
首先,您的類名FileReader與java.io.FileReader發生沖突,因此您對
new FileReader(this.openFile);
實際上是在嘗試實例化您的類FileReader的實例(對於該實例,沒有構造函數采用單個字符串),而不是實例化java.io.FileReader
以及此openFR聲明為FileReader類型(您的FileReader不是java.io.FileReader),因此對
open = new BufferedReader(openFR);
也會失敗,因為BufferedReader需要一個java.io.FileReader對象。
您的FileReader構造函數未聲明參數的類型:
FileReader(openFile, saveFile) {
this.openFile=openFile;
this.saveFile=saveFile;
}
應該:
FileReader(String openFile, String saveFile) {
this.openFile = openFile;
this.saveFile = saveFile;
}
因此,解決這些錯誤后程序將如何處理:
它嘗試通過從openFile中讀取所有行並將它們寫入saveFile來復制文件。
它的實際作用是:
從文件中讀取第一行並將其丟棄。 進入一個循環,在該循環中它將繼續讀取行並增加計數器(這也是錯誤的,因為它永遠不會在計數中包括第一行,除非目標是忽略第一行???)。 然后,它為openFile中的每一行(減去第一行)將空白行寫入saveFile。 您也永遠不會對計數器值做任何事情,那么對它進行計數有什么意義呢?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.