抱歉,如果标题令人困惑。问题是我基本上需要将我的java程序交给CD上的模块,我想知道如何设置目录,以便它可以在没有“C:// Users / Haf / Desktop / test”的情况下工作。文本”。以下是使用的两个类(不确定你是否需要两个):
package javaapplication2;
import java.io.*;
import javax.swing.JOptionPane;
/**
*
* @author Haf
*/
public class FileClass {
/**
* @param args the command line arguments
*/
public static void main(String[] args) throws IOException {
// TODO code application logic here
String file_name = "C://Users/Haf/Desktop/test.txt";
try {
ReadFile file = new ReadFile(file_name);
String [] aryLines = file.OpenFile();
int i;
for (i=0; i < aryLines.length; i++) {
System.out.println(aryLines[i]);
}
}
catch (IOException e) {
System.out.println(e.getMessage () );
}
}
}
。
package javaapplication2;
import java.io.*;
public class ReadFile { //creating a constructor
private String path;
public ReadFile(String file_path) {
path = file_path;
}
public String[] OpenFile() throws IOException { //returning a string array. You need to use IOException
FileReader fr = new FileReader (path); //creating FileReader obj called fr
BufferedReader textReader = new BufferedReader(fr); //bufferedreader obj
int numberOfLines = readLines();
String [] textData = new String[numberOfLines]; //array length set by numberOfLines
int i;
for (i = 0; i < numberOfLines; i++) {
textData[i] = textReader.readLine();
}
textReader.close();
return textData;
}
int readLines() throws IOException {
FileReader file_to_read = new FileReader(path);
BufferedReader bf = new BufferedReader (file_to_read);
String aLine;
int numberOfLines = 0;
while (( aLine = bf.readLine()) !=null) {
numberOfLines++;
}
bf.close();
return numberOfLines;
}
}
答案 0 :(得分:0)
你可以做两件事。
1)如果文件需要由用户提供,请将该位置作为参数。如果您希望应用程序在没有用户输入的情况下失败,也可以使用此方法。
public static void main(String... args) {
String location = args[0];
... // Do Stuff
}
2)如果文件是静态的,请将其打包在jar中并将其作为资源读取。
public static void main(String... args) {
InputStream input = FileClass.getClass().getClassLoader().getResourceAsStream("test.txt")
... // Do Stuff
}
当它是属性文件时,我的偏好是两者的组合。定义默认属性并打包它们。然后,允许用户通过提供自己的属性来覆盖值。从类路径加载属性(示例二),然后替换用户提供的文件中的任何值(示例一)。