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

时间:2014-04-23 15:12:12

标签: java file io directory

抱歉,如果标题令人困惑。问题是我基本上需要将我的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;
  }
}

1 个答案:

答案 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
}

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