[英]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.