簡體   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