缓冲读取器和文件路径 - 简单

时间:2013-06-05 20:50:50

标签: java bufferedreader filepath

首先,我对Java仍然非常苛刻,所以我想这可以很容易地回答。

我有一个程序,在第一次启动时,在指定位置(C驱动器上的AppData文件夹)中查找名为location.txt的文件,如果该文件不存在,则会创建该程序。该文件最终只有一个从JFileChooser中选择的文件路径。

我希望我的程序读取此文本文件中的文件路径,以便我不必静态引用文件位置。不过,我现在遇到了问题。这里有一些代码:(不要介意代码间距差,堆栈溢出对我来说很难)

BufferedReader bufferedReader = new BufferedReader(fileReader); // creates the buffered reader for the file
    java.util.List<String> lines = new ArrayList<String>(); //sets up an ArrayList (dynamic no set length)
    String line = null;
    try {
         while ((line = bufferedReader.readLine()) != null) {       // reads the file into the ArrayList line by line
             lines.add(line);
         }
     } catch (IOException e) {
         JOptionPane.showMessageDialog(null, "Error 16: "+e.getMessage()+"\nPlease contact Shane for assistance.");
         System.exit(1);
     }
     try {
         bufferedReader.close();            
     } catch (IOException e) {
         JOptionPane.showMessageDialog(null, "Error 17: "+e.getMessage()+"\nPlease contact Shane for assistance.");
         System.exit(1);
     }

     String[] specifiedLocation = lines.toArray(new String[lines.size()]);  // Converts the ArrayList into an Array.

     String htmlFilePath = specifiedLocation + "\\Timeline.html";
     File htmlFile = new File(htmlFilePath);

     JOptionPane.showMessageDialog(null, specifiedLocation);
     JOptionPane.showMessageDialog(null, htmlFilePath);

我不明白为什么当弹出指定位置的消息对话框时,文件路径完全存在。但是,当弹出htmlFilePath的消息对话框时,它看起来像这样:

[Ljava.lang.String; @ 1113708 \ Timeline.html

非常感谢任何帮助!

编辑: 我想通了.. 猛击头在桌子上我试图让它看一个数组而不指定哪一个。我知道,糟糕的代码练习,但简单的解决方法是采取这个:

String htmlFilePath = specifiedLocation +“\ Timeline.html”;

String htmlFilePath = specifiedLocation [0] +“\ Timeline.html”;

抱歉这个愚蠢的帖子......

2 个答案:

答案 0 :(得分:4)

toString的{​​{1}}方法未被覆盖。它将返回数组的Array表示(String中的toString),其中包括对象的类型(数组)+“@”+其哈希码

如果您希望输出更好,请改用Object。但这仍然给你Arrays.toString s,所以基于循环的ad-hoc解决方案可能更好。另外,如果要连接[ s,请使用String更快。

另外see(无耻的晋升)我对另一个问题的回答。

答案 1 :(得分:0)

替换此

String htmlFilePath = specifiedLocation + "\\Timeline.html";

   StringBuilder htmlFilePath= new StringBuilder();
   for(String s : specifiedLocation)
      htmlFilePath.append(s) ;
   htmlFilePath.append( "\\Timeline.html" );

您还可以使用Arrays.toString(specifiedLocation) More info