Zum Inhalt

Monat: August 2014

Random File Picker

Mit diesem paar Zeilen Code ist es mit Java 7 möglich, zufällig Dateien aus einer Ordnerstruktur zu kopieren, z.B. um schnell mal 100 mp3 Dateien aus der Sammlung auf eine CD oder einen USB Stick zu schieben, ohne selbst bei der Auswahl Hand kreativ werden zu müssen.

Hier gibts den Sourcecode und ein fertiges JAR File zum Download: RandomFilePicker

/*
* Created on 30.08.2014
*/
package de.denniswilmsmann.rfp;

import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Random;
import java.util.Set;

/*
* $Log: $
*/

public class RandomFilePicker {

	private final static List<File> files = new ArrayList<File>();

	public static void main(String[] args) {

		if (args == null || args.length < 4) {
			System.out
					.println("run with java -jar RandomFilePicker.jar <Source Folder> <Destination Folder> <Recursive y/n> <Number of Files>");
			System.out
					.println("run with java -jar RandomFilePicker.jar D:\\MyMusicArchive D:\\RandomMusic y 100");
			return;
		}

		File sourceFolder = new File(args[0]);

		if (!sourceFolder.isDirectory()) {
			System.out.println(args[0] + " is not a folder");
			return;
		}

		File destFolder = new File(args[1]);

		if (!sourceFolder.isDirectory()) {
			System.out.println(args[1] + " is not a folder");
			return;
		}

		boolean recursive = false;
		if (args[2].equalsIgnoreCase("y")) {
			recursive = true;
		}

		int numberOfFiles = Integer.parseInt(args[3]);

		parseFolder(sourceFolder, recursive);

		if (files.size() < numberOfFiles) {
			System.out
					.println("not enough files found, please reduce <Number of Files>");
		} else {
			Set<File> selectedFiles = new HashSet<File>();
			Random generator = new Random();
			while (selectedFiles.size() < numberOfFiles) {
				int i = generator.nextInt(files.size());
				selectedFiles.add(files.get(i));
			}
			for (File f : selectedFiles) {
				File out = new File(destFolder.getAbsolutePath()
						+ File.separator + f.getName());
				try {
					Files.copy(f.toPath(), out.toPath());
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}

	}

	private static void parseFolder(File folder, boolean recursive) {
		for (File f : folder.listFiles()) {
			if (f.isFile()) {
				addFile(f);
			} else if (f.isDirectory() && recursive) {
				parseFolder(f, recursive);
			}
		}
	}

	private static void addFile(File f) {
		// System.out.println(files.size() + 1 + ": " + f.getAbsolutePath());
		files.add(f);
	}
}

Chrome zeigt unter Android weiße bzw. leere Seiten

Seit den letzten ein oder zwei Updates hat Chrome unter Android die dumme Angewohnheit, ab und an weiße bzw. leere Seiten anzuzeigen. Dabei ist es egal, welche Seiten man versucht aufzurufen, denn auch Seiten von Google selbst sind betroffen.

So sieht die leere Seite aus:

chrome-white-page-1

Und so sollte die Seiten eigentlich aussehen:

chrome-white-page-2

Den Cache zu leeren oder sonst irgendwie an den Einstellungen rumzuspielen, hat bei mir keinen Erfolg gebracht. Aber scheinbar bin ich auch nicht ganz alleine mit diesen Problem, wenn man mal einen Blick auch die Chrome Seite im Play Store wirft:

chrome-white-page-3

Kleines Update vom 06.08.2014: Das Problem ist als Bug scheinbar schon seit Februar 2014 bekannt: Issue 342190: OOM conditions killing foreground render process
Scheinbar steht auch ein möglicher Bugfix für die Beta Version in den Startlöchern: https://code.google.com/p/chromium/issues/detail?id=399521#c2

Update vom 25.08.2014: Das letzte Update von Chrome hat das Problem behoben. 🙂