如何设置文件目录,使其在没有完整文件路径的情况下工作



如果标题让人困惑,很抱歉。问题是,我基本上需要把我的java程序放在一张CD上交给一个模块,我想知道如何设置目录,这样它就可以在没有"C:\/Users/Haf/Desktop/test.txt"的情况下工作

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;
  }
}

你可以做两件事。

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
}

当它是一个属性文件时,我更喜欢两者的结合。定义默认属性并打包它们。然后,允许用户通过提供自己的属性来覆盖这些值。从类路径加载属性(示例二),然后替换用户提供的文件中的任何值(示例一)。

相关内容

  • 没有找到相关文章

最新更新