Для Java 7+ существует также https://docs.oracle.com/javase/7/docs/api/java/nio/file/DirectoryStream.html
Пример, взятый из Javadoc:
List listSourceFiles(Path dir) throws IOException {
List result = new ArrayList<>();
try (DirectoryStream stream = Files.newDirectoryStream(dir, "*.{c,h,cpp,hpp,java}")) {
for (Path entry: stream) {
result.add(entry);
}
} catch (DirectoryIteratorException ex) {
// I/O error encounted during the iteration, the cause is an IOException
throw ex.getCause();
}
return result;
}
Нашел работающее решение (с помощью http://www.topsemtips.com/2008/11/save-html-table-to-excel-using-jquery/ ):
Я изменил функцию на:
function popup(data) {
$("#main div.inner").append('<form id="exportform" action="export.php" method="post" target="_blank"><input type="hidden" id="exportdata" name="exportdata" /></form>');
$("#exportdata").val(data);
$("#exportform").submit().remove();
return true;
}
И создал файл export.php:
<?php
header("Content-type: application/vnd.ms-excel; name='excel'");
header("Content-Disposition: filename=export.csv");
header("Pragma: no-cache");
header("Expires: 0");
print $_REQUEST['exportdata'];
?>
Обновление: Версия, более дружественная к IE7:
<?php
header('Content-Type: application/force-download');
header('Content-disposition: attachment; filename=filename.csv');
print $_POST['exportdata'];
?>
Я не рекомендую «загружать» данные CSV таким образом. IE7 позволяет использовать в адресной строке не более 2000 символов, поэтому высока вероятность того, что ваш файл будет усечен.
Спасибо за ваш вопрос и ответ, мне понравилось. Вот (почти идентичная) версия ASP.Net вашего решения, которое я использую:
Измените всплывающую функцию table2CSV.js на:
function popup(data) {
$("body").append('<form id="exportform" action="CsvExport.ashx" method="post" target="_blank"><input type="hidden" id="exportdata" name="exportdata" /></form>');
$("#exportdata").val(data);
$("#exportform").submit().remove();
return true;
}
Обратите внимание на изменение с export.php на общий обработчик .ashx.
Общий код обработчика:
public void ProcessRequest (HttpContext context) {
context.Response.ContentType = "application/force-download";
context.Response.AddHeader("content-disposition", "filename=filename.csv");
context.Response.Write(context.Request.Form["exportdata"]);
}