diff --git a/reference.md b/reference.md index 49c29eed..9b9ffcf5 100644 --- a/reference.md +++ b/reference.md @@ -79,6 +79,7 @@ __Please note:__ CLIJx is under heavy construction. This list may change at any * flip' * gaussJordan * generateDistanceMatrix +* generateTouchMatrix * getSize * gradientX' * gradientY' @@ -146,10 +147,14 @@ __Please note:__ CLIJx is under heavy construction. This list may change at any * multiplySliceBySliceWithScalars' * multiplyStackWithPlane' * nClosestPoints +* nonzeroMaximumDiamond +* nonzeroMaximumDiamond * nonzeroMinimumDiamond * nonzeroMinimumDiamond * notEqualConstant * notEqual +* onlyzeroOverwriteMaximumBox +* onlyzeroOverwriteMaximumDiamond * particleImageVelocimetry2D * particleImageVelocimetryTimelapse * particleImageVelocimetry @@ -502,7 +507,7 @@ Parameters (macro): Image input, Image destination, String method Parameters (Java): -ClearCLBuffer arg1, ClearCLBuffer arg2, String arg3, Float arg4, Float arg5, Integer arg6 +ClearCLBuffer arg1, ClearCLBuffer arg2, String arg3 ## automaticThreshold' @@ -516,7 +521,7 @@ Parameters (macro): Image input, Image destination, String method Parameters (Java): -ClearCLBuffer arg1, ClearCLBuffer arg2, String arg3 +ClearCLBuffer arg1, ClearCLBuffer arg2, String arg3, Float arg4, Float arg5, Integer arg6 ## binaryAnd' @@ -544,6 +549,12 @@ Image source, Image destination Parameters (Java): ClearCLImageInterface arg1, ClearCLImageInterface arg2 + + +### Example scripts +* [outline.ijm](https://github.com/clij/clij-advanced-filters/blob/master/src/main/macro/outline.ijm) + + ## binaryIntersection @@ -650,7 +661,7 @@ Parameters (macro): Image source, Image destination, Number sigmaX, Number sigmaY Parameters (Java): -ClearCLBuffer arg1, ClearCLBuffer arg2, Float arg3, Float arg4 +ClearCLBuffer arg1, ClearCLBuffer arg2, Float arg3, Float arg4, Float arg5 ## blur' @@ -663,7 +674,7 @@ Parameters (macro): Image source, Image destination, Number sigmaX, Number sigmaY Parameters (Java): -ClearCLBuffer arg1, ClearCLBuffer arg2, Float arg3, Float arg4, Float arg5 +ClearCLBuffer arg1, ClearCLBuffer arg2, Float arg3, Float arg4 ## boundingBox @@ -677,6 +688,12 @@ Image source Parameters (Java): ClearCLBuffer arg1 + + +### Example scripts +* [boundingBoxes.ijm](https://github.com/clij/clij-advanced-filters/blob/master/src/main/macro/boundingBoxes.ijm) + + ## centerOfMass' @@ -700,6 +717,21 @@ Image binary_input, Image labeling_destination Parameters (Java): ClearCLBuffer arg1, ClearCLBuffer arg2 + + +### Example scripts +* [boundingBoxes.ijm](https://github.com/clij/clij-advanced-filters/blob/master/src/main/macro/boundingBoxes.ijm) +* [excludeLabelsOnEdges.ijm](https://github.com/clij/clij-advanced-filters/blob/master/src/main/macro/excludeLabelsOnEdges.ijm) +* [intensity_per_label.ijm](https://github.com/clij/clij-advanced-filters/blob/master/src/main/macro/intensity_per_label.ijm) +* [labeling.ijm](https://github.com/clij/clij-advanced-filters/blob/master/src/main/macro/labeling.ijm) +* [labeling_benchmarking.ijm](https://github.com/clij/clij-advanced-filters/blob/master/src/main/macro/labeling_benchmarking.ijm) +* [measure_area_per_label.ijm](https://github.com/clij/clij-advanced-filters/blob/master/src/main/macro/measure_area_per_label.ijm) +* [measure_statistics.ijm](https://github.com/clij/clij-advanced-filters/blob/master/src/main/macro/measure_statistics.ijm) +* [meshTouchingNeighbors.ijm](https://github.com/clij/clij-advanced-filters/blob/master/src/main/macro/meshTouchingNeighbors.ijm) +* [particle_analysis.ijm](https://github.com/clij/clij-advanced-filters/blob/master/src/main/macro/particle_analysis.ijm) +* [pullLabelsToROIManager.ijm](https://github.com/clij/clij-advanced-filters/blob/master/src/main/macro/pullLabelsToROIManager.ijm) + + ## convertToImageJBinary' @@ -775,6 +807,12 @@ Image source Parameters (Java): ClearCLBuffer arg1 + + +### Example scripts +* [intensity_per_label.ijm](https://github.com/clij/clij-advanced-filters/blob/master/src/main/macro/intensity_per_label.ijm) + + ## countNonZeroVoxelsLocally' @@ -797,7 +835,7 @@ Parameters (macro): Image source, Image destination, Number startX, Number startY, Number width, Number height Parameters (Java): -ClearCLBuffer arg1, ClearCLBuffer arg2, Integer arg3, Integer arg4 +ClearCLBuffer arg1, ClearCLBuffer arg2, Integer arg3, Integer arg4, Integer arg5 ## crop' @@ -810,7 +848,7 @@ Parameters (macro): Image source, Image destination, Number startX, Number startY, Number width, Number height Parameters (Java): -ClearCLBuffer arg1, ClearCLBuffer arg2, Integer arg3, Integer arg4, Integer arg5 +ClearCLBuffer arg1, ClearCLBuffer arg2, Integer arg3, Integer arg4 ## crossCorrelation @@ -1001,6 +1039,12 @@ Image source, Image destination Parameters (Java): ClearCLBuffer arg1, ClearCLBuffer arg2 + + +### Example scripts +* [distanceMap.ijm](https://github.com/clij/clij-advanced-filters/blob/master/src/main/macro/distanceMap.ijm) + + ## divideImages' @@ -1037,7 +1081,7 @@ Parameters (macro): Image source, Image destination, Number factorX, Number factorY Parameters (Java): -ClearCLBuffer arg1, ClearCLBuffer arg2, Float arg3, Float arg4, Float arg5 +ClearCLBuffer arg1, ClearCLBuffer arg2, Float arg3, Float arg4 ## downsample' @@ -1049,7 +1093,7 @@ Parameters (macro): Image source, Image destination, Number factorX, Number factorY Parameters (Java): -ClearCLBuffer arg1, ClearCLBuffer arg2, Float arg3, Float arg4 +ClearCLBuffer arg1, ClearCLBuffer arg2, Float arg3, Float arg4, Float arg5 ## drawBox @@ -1084,6 +1128,14 @@ Image destination, Number x1, Number y1, Number z1, Number x2, Number y2, Number Parameters (Java): ClearCLBuffer arg1, Float arg2, Float arg3, Float arg4, Float arg5, Float arg6, Float arg7, Float arg8 + + +### Example scripts +* [drawLine.ijm](https://github.com/clij/clij-advanced-filters/blob/master/src/main/macro/drawLine.ijm) +* [meshTouchingNeighbors.ijm](https://github.com/clij/clij-advanced-filters/blob/master/src/main/macro/meshTouchingNeighbors.ijm) +* [mesh_closest_points.ijm](https://github.com/clij/clij-advanced-filters/blob/master/src/main/macro/mesh_closest_points.ijm) + + ## drawSphere @@ -1205,6 +1257,13 @@ Image label_map_input, Image label_map_destination Parameters (Java): ClearCLBuffer arg1, ClearCLBuffer arg2 + + +### Example scripts +* [excludeLabelsOnEdges.ijm](https://github.com/clij/clij-advanced-filters/blob/master/src/main/macro/excludeLabelsOnEdges.ijm) +* [pullLabelsToROIManager.ijm](https://github.com/clij/clij-advanced-filters/blob/master/src/main/macro/pullLabelsToROIManager.ijm) + + ## exponential @@ -1295,6 +1354,30 @@ Image coordinate_list1, Image coordinate_list2, Image distance_matrix_destinatio Parameters (Java): ClearCLBuffer arg1, ClearCLBuffer arg2, ClearCLBuffer arg3 + + +### Example scripts +* [mesh_closest_points.ijm](https://github.com/clij/clij-advanced-filters/blob/master/src/main/macro/mesh_closest_points.ijm) +* [spot_distance_measurement.ijm](https://github.com/clij/clij-advanced-filters/blob/master/src/main/macro/spot_distance_measurement.ijm) + + + +## generateTouchMatrix + +Takes a labelmap with n labels and generates a (n+1)*(n+1) matrix where all pixels are set to 0 exept those where labels are touching.Only half of the matrix is filled (with x < y). For example, if labels 3 and 4 are touching then the pixel (3,4) in the matrix will be set to 1. + +Parameters (macro): +Image label_map, Image touch_matrix_destination + +Parameters (Java): +ClearCLBuffer arg1, ClearCLBuffer arg2 + + + +### Example scripts +* [meshTouchingNeighbors.ijm](https://github.com/clij/clij-advanced-filters/blob/master/src/main/macro/meshTouchingNeighbors.ijm) + + ## getSize @@ -1306,6 +1389,14 @@ Image source Parameters (Java): ClearCLBuffer arg1 + + +### Example scripts +* [getsize.ijm](https://github.com/clij/clij-advanced-filters/blob/master/src/main/macro/getsize.ijm) +* [meshTouchingNeighbors.ijm](https://github.com/clij/clij-advanced-filters/blob/master/src/main/macro/meshTouchingNeighbors.ijm) +* [mesh_closest_points.ijm](https://github.com/clij/clij-advanced-filters/blob/master/src/main/macro/mesh_closest_points.ijm) + + ## gradientX' @@ -1416,6 +1507,14 @@ Image source Parameters (Java): ClearCLBuffer arg1, ResultsTable arg2 + + +### Example scripts +* [matrix_multiply.ijm](https://github.com/clij/clij-advanced-filters/blob/master/src/main/macro/matrix_multiply.ijm) +* [meshTouchingNeighbors.ijm](https://github.com/clij/clij-advanced-filters/blob/master/src/main/macro/meshTouchingNeighbors.ijm) +* [mesh_closest_points.ijm](https://github.com/clij/clij-advanced-filters/blob/master/src/main/macro/mesh_closest_points.ijm) + + ## invert' @@ -1454,6 +1553,13 @@ Image label_map_source, Image mask_destination, Number label_index Parameters (Java): ClearCLBuffer arg1, ClearCLBuffer arg2, Float arg3 + + +### Example scripts +* [boundingBoxes.ijm](https://github.com/clij/clij-advanced-filters/blob/master/src/main/macro/boundingBoxes.ijm) +* [measure_area_per_label.ijm](https://github.com/clij/clij-advanced-filters/blob/master/src/main/macro/measure_area_per_label.ijm) + + ## laplace @@ -1539,6 +1645,12 @@ Image source, Image label_map, Image destination, Number label_index Parameters (Java): ClearCLBuffer arg1, ClearCLBuffer arg2, ClearCLBuffer arg3, Float arg4 + + +### Example scripts +* [intensity_per_label.ijm](https://github.com/clij/clij-advanced-filters/blob/master/src/main/macro/intensity_per_label.ijm) + + ## maskStackWithPlane' @@ -1569,6 +1681,12 @@ Image source, Image mask, Image destination Parameters (Java): ClearCLBuffer arg1, ClearCLBuffer arg2, ClearCLBuffer arg3 + + +### Example scripts +* [intensity_per_label.ijm](https://github.com/clij/clij-advanced-filters/blob/master/src/main/macro/intensity_per_label.ijm) + + ## matrixEqual @@ -1677,7 +1795,7 @@ Parameters (macro): Image source, Image destination, Number radiusX, Number radiusY Parameters (Java): -ClearCLBuffer arg1, ClearCLBuffer arg2, Integer arg3, Integer arg4 +ClearCLBuffer arg1, ClearCLBuffer arg2, Integer arg3, Integer arg4, Integer arg5 ## maximumSphere' @@ -1689,7 +1807,7 @@ Parameters (macro): Image source, Image destination, Number radiusX, Number radiusY Parameters (Java): -ClearCLBuffer arg1, ClearCLBuffer arg2, Integer arg3, Integer arg4, Integer arg5 +ClearCLBuffer arg1, ClearCLBuffer arg2, Integer arg3, Integer arg4 ## maximumXYZProjection' @@ -1798,7 +1916,7 @@ Parameters (macro): Image source, Image destination, Number radiusX, Number radiusY Parameters (Java): -ClearCLBuffer arg1, ClearCLBuffer arg2, Integer arg3, Integer arg4 +ClearCLBuffer arg1, ClearCLBuffer arg2, Integer arg3, Integer arg4, Integer arg5 ## meanSphere' @@ -1810,7 +1928,7 @@ Parameters (macro): Image source, Image destination, Number radiusX, Number radiusY Parameters (Java): -ClearCLBuffer arg1, ClearCLBuffer arg2, Integer arg3, Integer arg4, Integer arg5 +ClearCLBuffer arg1, ClearCLBuffer arg2, Integer arg3, Integer arg4 ## meanSquaredError @@ -1903,7 +2021,7 @@ Parameters (macro): Image source, Image destination, Number radiusX, Number radiusY Parameters (Java): -ClearCLBuffer arg1, ClearCLBuffer arg2, Integer arg3, Integer arg4, Integer arg5 +ClearCLBuffer arg1, ClearCLBuffer arg2, Integer arg3, Integer arg4 ## medianSphere' @@ -1917,7 +2035,7 @@ Parameters (macro): Image source, Image destination, Number radiusX, Number radiusY Parameters (Java): -ClearCLBuffer arg1, ClearCLBuffer arg2, Integer arg3, Integer arg4 +ClearCLBuffer arg1, ClearCLBuffer arg2, Integer arg3, Integer arg4, Integer arg5 ## minimumBox' @@ -2088,6 +2206,12 @@ Image matrix1, Image matrix2, Image matrix_destination Parameters (Java): ClearCLBuffer arg1, ClearCLBuffer arg2, ClearCLBuffer arg3 + + +### Example scripts +* [matrix_multiply.ijm](https://github.com/clij/clij-advanced-filters/blob/master/src/main/macro/matrix_multiply.ijm) + + ## multiplySliceBySliceWithScalars' @@ -2125,13 +2249,41 @@ Image distance_matrix, Image indexlist_destination, Number nClosestPointsTofind Parameters (Java): ClearCLBuffer arg1, ClearCLBuffer arg2 + + +### Example scripts +* [mesh_closest_points.ijm](https://github.com/clij/clij-advanced-filters/blob/master/src/main/macro/mesh_closest_points.ijm) + + + +## nonzeroMaximumDiamond + +Apply a maximum-sphere filter to the input image. The radius is fixed to 1 and pixels with value 0 are ignored. + +Parameters (macro): +Image input, Image destination + +Parameters (Java): +ClearCLImageInterface arg1, ClearCLBuffer arg2, ClearCLImageInterface arg3, ClearCLKernel arg4 + + +## nonzeroMaximumDiamond + +Apply a maximum-sphere filter to the input image. The radius is fixed to 1 and pixels with value 0 are ignored. + +Parameters (macro): +Image input, Image destination + +Parameters (Java): +ClearCLImageInterface arg1, ClearCLImageInterface arg2, ClearCLImageInterface arg3 + ## nonzeroMinimumDiamond -null +Apply a minimum-sphere filter to the input image. The radius is fixed to 1 and pixels with value 0 are ignored. Parameters (macro): -null +Image input, Image destination Parameters (Java): ClearCLImageInterface arg1, ClearCLBuffer arg2, ClearCLImageInterface arg3, ClearCLKernel arg4 @@ -2139,10 +2291,10 @@ ClearCLImageInterface arg1, ClearCLBuffer arg2, ClearCLImageInterface arg3, Clea ## nonzeroMinimumDiamond -null +Apply a minimum-sphere filter to the input image. The radius is fixed to 1 and pixels with value 0 are ignored. Parameters (macro): -null +Image input, Image destination Parameters (Java): ClearCLImageInterface arg1, ClearCLImageInterface arg2, ClearCLImageInterface arg3 @@ -2173,6 +2325,34 @@ Image source1, Image source2, Image destination Parameters (Java): ClearCLBuffer arg1, ClearCLBuffer arg2, ClearCLBuffer arg3 + +## onlyzeroOverwriteMaximumBox + +null + +Parameters (macro): +null + +Parameters (Java): +ClearCLImageInterface arg1, ClearCLImageInterface arg2, ClearCLImageInterface arg3 + + +## onlyzeroOverwriteMaximumDiamond + +TODO + +Parameters (macro): +Image input, Image destination + +Parameters (Java): +ClearCLImageInterface arg1, ClearCLImageInterface arg2, ClearCLImageInterface arg3 + + + +### Example scripts +* [meshTouchingNeighbors.ijm](https://github.com/clij/clij-advanced-filters/blob/master/src/main/macro/meshTouchingNeighbors.ijm) + + ## particleImageVelocimetry2D @@ -2219,6 +2399,13 @@ Image source, Image destination, Number destinationX, Number destinationY Parameters (Java): ClearCLBuffer arg1, ClearCLBuffer arg2, Integer arg3, Integer arg4 + + +### Example scripts +* [make_super_blobs.ijm](https://github.com/clij/clij-advanced-filters/blob/master/src/main/macro/make_super_blobs.ijm) +* [paste_images.ijm](https://github.com/clij/clij-advanced-filters/blob/master/src/main/macro/paste_images.ijm) + + ## paste @@ -2230,6 +2417,13 @@ Image source, Image destination, Number destinationX, Number destinationY Parameters (Java): ClearCLBuffer arg1, ClearCLBuffer arg2, Integer arg3, Integer arg4, Integer arg5 + + +### Example scripts +* [make_super_blobs.ijm](https://github.com/clij/clij-advanced-filters/blob/master/src/main/macro/make_super_blobs.ijm) +* [paste_images.ijm](https://github.com/clij/clij-advanced-filters/blob/master/src/main/macro/paste_images.ijm) + + ## powerImages @@ -2267,6 +2461,12 @@ Image destination, String filename, String nextFilename, String loaderId Parameters (Java): ClearCLBuffer arg1, String arg2, String arg3, String arg4 + + +### Example scripts +* [preloading.ijm](https://github.com/clij/clij-advanced-filters/blob/master/src/main/macro/preloading.ijm) + + ## presign @@ -2289,6 +2489,12 @@ Image binary_input Parameters (Java): ClearCLBuffer arg1 + + +### Example scripts +* [pullAsROI.ijm](https://github.com/clij/clij-advanced-filters/blob/master/src/main/macro/pullAsROI.ijm) + + ## radialProjection' @@ -2320,7 +2526,7 @@ Parameters (macro): Image destination, String filename, Number width, Number height, Number depth, Number bitsPerPixel Parameters (Java): -String arg1, Integer arg2, Integer arg3, Integer arg4, Integer arg5 +ClearCLBuffer arg1, String arg2 ## readRawImageFromDisc @@ -2331,7 +2537,7 @@ Parameters (macro): Image destination, String filename, Number width, Number height, Number depth, Number bitsPerPixel Parameters (Java): -ClearCLBuffer arg1, String arg2 +String arg1, Integer arg2, Integer arg3, Integer arg4, Integer arg5 ## replaceIntensity @@ -2489,6 +2695,12 @@ Image distance_matrix, Image destination_minimum_distances Parameters (Java): ClearCLBuffer arg1, ClearCLBuffer arg2 + + +### Example scripts +* [spot_distance_measurement.ijm](https://github.com/clij/clij-advanced-filters/blob/master/src/main/macro/spot_distance_measurement.ijm) + + ## smallerConstant @@ -2575,6 +2787,14 @@ Image input_spots, Image destination_pointlist Parameters (Java): ClearCLBuffer arg1, ClearCLBuffer arg2 + + +### Example scripts +* [meshTouchingNeighbors.ijm](https://github.com/clij/clij-advanced-filters/blob/master/src/main/macro/meshTouchingNeighbors.ijm) +* [mesh_closest_points.ijm](https://github.com/clij/clij-advanced-filters/blob/master/src/main/macro/mesh_closest_points.ijm) +* [spot_distance_measurement.ijm](https://github.com/clij/clij-advanced-filters/blob/master/src/main/macro/spot_distance_measurement.ijm) + + ## stackToTiles @@ -2621,6 +2841,13 @@ Image input, Image labelmap Parameters (Java): ClearCLBuffer arg1, ClearCLBuffer arg2, int arg3 + + +### Example scripts +* [measure_statistics.ijm](https://github.com/clij/clij-advanced-filters/blob/master/src/main/macro/measure_statistics.ijm) +* [particle_analysis.ijm](https://github.com/clij/clij-advanced-filters/blob/master/src/main/macro/particle_analysis.ijm) + + ## statisticsOfLabelledPixels @@ -2632,6 +2859,13 @@ Image input, Image labelmap Parameters (Java): ClearCLBuffer arg1, ClearCLBuffer arg2, ResultsTable arg3 + + +### Example scripts +* [measure_statistics.ijm](https://github.com/clij/clij-advanced-filters/blob/master/src/main/macro/measure_statistics.ijm) +* [particle_analysis.ijm](https://github.com/clij/clij-advanced-filters/blob/master/src/main/macro/particle_analysis.ijm) + + ## statisticsOfLabelledPixels @@ -2643,6 +2877,13 @@ Image input, Image labelmap Parameters (Java): ClearCLBuffer arg1, ClearCLBuffer arg2, int arg3, int arg4 + + +### Example scripts +* [measure_statistics.ijm](https://github.com/clij/clij-advanced-filters/blob/master/src/main/macro/measure_statistics.ijm) +* [particle_analysis.ijm](https://github.com/clij/clij-advanced-filters/blob/master/src/main/macro/particle_analysis.ijm) + + ## statisticsOfLabelledPixels @@ -2654,6 +2895,13 @@ Image input, Image labelmap Parameters (Java): ClearCLBuffer arg1, ClearCLBuffer arg2 + + +### Example scripts +* [measure_statistics.ijm](https://github.com/clij/clij-advanced-filters/blob/master/src/main/macro/measure_statistics.ijm) +* [particle_analysis.ijm](https://github.com/clij/clij-advanced-filters/blob/master/src/main/macro/particle_analysis.ijm) + + ## subtractBackground @@ -2783,7 +3031,7 @@ Parameters (macro): Image input1, Image input2, Image destination Parameters (Java): -ClearCLBuffer arg1, ClearCLBuffer arg2, ClearCLBuffer arg3 +ClearCLBuffer arg1, ClearCLBuffer arg2, double[] arg3 ## translationRegistration @@ -2794,7 +3042,7 @@ Parameters (macro): Image input1, Image input2, Image destination Parameters (Java): -ClearCLBuffer arg1, ClearCLBuffer arg2, double[] arg3 +ClearCLBuffer arg1, ClearCLBuffer arg2, ClearCLBuffer arg3 ## translationTimelapseRegistration diff --git a/src/test/java/net/haesleinhuepf/clijx/codegenerator/DocumentationGenerator.java b/src/test/java/net/haesleinhuepf/clijx/codegenerator/DocumentationGenerator.java index e4ff9e61..3964c488 100644 --- a/src/test/java/net/haesleinhuepf/clijx/codegenerator/DocumentationGenerator.java +++ b/src/test/java/net/haesleinhuepf/clijx/codegenerator/DocumentationGenerator.java @@ -8,9 +8,7 @@ import net.haesleinhuepf.clijx.CLIJx; import org.scijava.Context; -import java.io.File; -import java.io.FileWriter; -import java.io.IOException; +import java.io.*; import java.lang.reflect.Method; import java.lang.reflect.Modifier; import java.lang.reflect.Parameter; @@ -131,6 +129,10 @@ public static void main(String ... args) throws IOException { builder.append(item.parametersJava); builder.append("\n\n"); + String linkToExamples = searchForExampleScripts("CLIJx_" + item.methodName, "src/main/macro/", "https://github.com/clij/clij-advanced-filters/blob/master/src/main/macro/"); + if(linkToExamples.length() > 0) { + builder.append("\n\n### Example scripts\n" + linkToExamples + "\n\n"); + } } File outputTarget = new File("reference.md"); @@ -139,4 +141,49 @@ public static void main(String ... args) throws IOException { writer.write(builder.toString()); writer.close(); } + + protected static String searchForExampleScripts(String searchFor, String searchinFolder, String baseLink) { + StringBuilder result = new StringBuilder(); + for (File file : new File(searchinFolder).listFiles()) { + if (!file.isDirectory()) { + String content = readFile(file.getAbsolutePath()); + if (content.contains(searchFor)) { + result.append("* [" + file.getName() + "](" + baseLink + file.getName() + ")\n"); + } + } + } + return result.toString(); + } + + public static String readFile(String filename) { + System.out.println("Reading " + filename); + BufferedReader br = null; + try { + br = new BufferedReader(new FileReader(filename)); + } catch (FileNotFoundException e) { + e.printStackTrace(); + } + try { + StringBuilder sb = new StringBuilder(); + String line = br.readLine(); + + while (line != null) { + sb.append(line); + sb.append(System.lineSeparator()); + line = br.readLine(); + } + br.close(); + return sb.toString(); + } catch (IOException e) { + e.printStackTrace(); + } finally { + try { + br.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + return null; + } + }