繁体   English   中英

使用JFileChooser将JTextArea中的某些文本保存到文件中

[英]Saving certain text from JTextArea to a file using JFileChooser

我的JTextArea有以下文本:

Getting all .mp3 files in C:\Users\Admin\Music including those in subdirectories

C:\Users\Admin\Music\Sample Music\Kalimba.mp3
C:\Users\Admin\Music\Sample Music\Maid with the Flaxen Hair.mp3
C:\Users\Admin\Music\Sample Music\Sleep Away.mp3

Finished Searching...

我只想保存这一部分:

C:\Users\Admin\Music\Sample Music\Kalimba.mp3
C:\Users\Admin\Music\Sample Music\Maid with the Flaxen Hair.mp3
C:\Users\Admin\Music\Sample Music\Sleep Away.mp3

不幸的是我不能使用下面的代码:

JFileChooser saveFile = new JFileChooser("./");  
int returnVal = saveFile.showSaveDialog(this);  
File file = saveFile.getSelectedFile();  
BufferedWriter writer = null;  
if (returnVal == JFileChooser.APPROVE_OPTION)  
{  
    try {  
    writer = new BufferedWriter( new FileWriter( file.getAbsolutePath()+".txt")); // txt for now but needs to be m3u 
    searchMP3Results.write(writer); // using JTextArea built-in writer
    writer.close( );  
    JOptionPane.showMessageDialog(this, "Search results have been saved!",  
                "Success", JOptionPane.INFORMATION_MESSAGE);  
    }  
    catch (IOException e) {  
    JOptionPane.showMessageDialog(this, "An error has occured",  
                "Failed", JOptionPane.INFORMATION_MESSAGE);  
    }  
}

使用上面的代码,它将保存JTextArea所有JTextArea 你能帮助我吗?

PS:如果可能,我想将其另存为M3U播放列表。

我假设searchMP3Results是包含文本的JTextArea 在这种情况下,您可以使用searchMP3Results.getText()将文本作为String获取,然后通过正则表达式运行结果以查找文件路径。 Windows路径的正则表达式示例在此问题上是Java正则表达式以匹配文件路径 不幸的是,这将您的应用程序绑定到Windows,但是如果可以接受,那么您就可以使用了,否则您应该使用系统属性检测操作系统并选择正确的正则表达式。

至于m3u,您应该只能够导出目录路径(每行一个)。 扩展的m3u文件(使用标题#EXTM3U )需要其他信息,但是您应该能够摆脱简单版本的#EXTM3U

更新:添加了代码更新2:将正则表达式更改为路径正则表达式(副文件)的修改版本,现在针对每行运行它,而不是执行多行评估

String text = searchMP3Results.getText();
StringBuilder output = new StringBuilder();
for ( String s : text.split("\n") ) {
    if ( java.util.regex.Pattern.matches("^([a-zA-Z]:)?(\\\\[\\s\\.a-zA-Z0-9_-]+)+\\\\?$", s) ) {
        output.append(s).append("\n");
    }
}

这段代码将输入分割成一个行数组(您可能要使用\\r\\n而不是仅使用\\n ),然后使用正则表达式检查该行是否为路径/文件名组合。 不再执行任何检查,并且假定路径/文件名有效,因为它可能来自外部应用程序。 我的意思是正则表达式不检查路径/文件名中的无效字符,也不检查文件的存在,尽管这很容易添加。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM