0

首先,我对 Java 还是很陌生,所以我想这可以很容易地回答。

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

我希望我的程序读取此文本文件中的文件路径,这样我就不必静态引用文件位置。不过,我现在遇到了问题。这是一些代码:(不要介意代码间距不佳,stackoverflow 对我来说很难)

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

很感谢任何形式的帮助!

编辑:我想通了..撞到桌子上我试图让它查看一个数组而不是指定哪个数组。糟糕的代码实践,我知道,但简单的解决方法是采取以下措施:

字符串 htmlFilePath = 指定位置 + "\Timeline.html";

字符串 htmlFilePath = 指定位置[0] + "\Timeline.html";

对不起,愚蠢的帖子......

4

2 回答 2

4

s的toString方法Array没有被覆盖。它将返回一个String数组的表示形式(这就是toStringinObject所做的),其中包括对象的类型(数组)+“@”+它的哈希码。

如果您希望输出更好,请Arrays.toString改用。但这仍然为您提供[s,因此基于循环的临时解决方案可能会更好。此外,如果您要连接Strings,使用StringBuilder会更快。

请参阅(无耻促销)我对另一个问题的回答。

于 2013-06-05T20:52:32.397 回答
0

替换这个

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

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

您还可以使用Arrays.toString(specifiedLocation) 更多信息

于 2013-06-05T20:54:53.693 回答