Damit möchte ich effizienter große Mengen einander ähnliche Dateien für ein anderes Projekt erstellen:
Aber wenn ich versuche, es laufen zu lassen, kommt der hier in der Konsole:
Könnt ihr mir helfen, den Fehler zu finden?
Es ist nichts im code rot unterstrichen.
Java:
import java.io.Closeable;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.StandardOpenOption;
import java.util.ArrayList;
import java.util.Arrays;
public class JsonFileCreateHelper
{
static File dir1 = new File("D:\\Mods\\1_15_1\\FlatTilesMod\\src\\main\\resources\\assets\\flattilesmod\\blockstates");
static File dir2 = new File("D:\\Mods\\1_15_1\\FlatTilesMod\\src\\main\\resources\\assets\\flattilesmod\\models\\block");
static File dir3 = new File("D:\\Mods\\1_15_1\\FlatTilesMod\\src\\main\\resources\\assets\\flattilesmod\\models\\item");
static File dir4 = new File("D:\\Mods\\1_15_1\\FlatTilesMod\\src\\main\\resources\\data\\flattilesmod\\recipes");
static ArrayList<File> list1 = new ArrayList<File>(Arrays.asList(dir1.listFiles()));
static ArrayList<File> list2 = new ArrayList<File>(Arrays.asList(dir2.listFiles()));
static ArrayList<File> list3 = new ArrayList<File>(Arrays.asList(dir3.listFiles()));
static ArrayList<File> list4 = new ArrayList<File>(Arrays.asList(dir4.listFiles()));
public static void main(String[] args) throws IOException
{
int i;
/*for (i = 0; i < list1.size(); i++)
{
File dir = list1.get(i);
createFile(dir1, dir.getName(), "glazed_");
}
for (i = 0; i < list2.size(); i++)
{
File dir = list2.get(i);
createFile(dir2, dir.getName(), "glazed_");
}
for (i = 0; i < list3.size(); i++)
{
File dir = list3.get(i);
createFile(dir3, dir.getName(), "glazed_");
}*/
for (i = 0; i < list4.size(); i++)
{
File dir = list4.get(i);
createFile(dir4, dir.getName(), "glazed_");
}
}
public static void createFile(File dir, String name, String subString)
{
if( name.contains("concrete") && name.endsWith(".json"))
{
try
{
//writeFile(dir, rename(name, subString), rename(readFile(name), subString));
writeFile(dir, name.replace("concrete", "terracotta"), readFile(name).replace("concrete", "terracotta"));
//copy (dir, new File (dir1, rename(dir.getName(), subString)));
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
/*@SuppressWarnings("unused")
private static void copy(File source, File destination) throws IOException
{
long length = source.length();
@SuppressWarnings("resource")
FileChannel input = new FileInputStream(source).getChannel();
try
{
@SuppressWarnings("resource")
FileChannel output = new FileOutputStream(destination).getChannel();
try
{
for (long position = 0; position < length; )
{
position += input.transferTo(position, length-position, output);
}
}
finally
{
output.close();
}
}
finally
{
input.close();
}
}*/
@SuppressWarnings("resource")
public static String readFile(String filename) throws IOException
{
File file = new File(filename);
int len = (int) file.length();
byte[] bytes = new byte[len];
FileInputStream fis = null;
try
{
fis = new FileInputStream(file);
assert len == fis.read(bytes);
}
catch (IOException e)
{
close(fis);
throw e;
}
return new String(bytes, "UTF-8");
}
public static String rename (String source, String part)
{
String new_content = new String();
int i;
for (i = 0; i < source.length(); i++)
{
new_content += source.charAt(i);
if (source.charAt(i) == '_' && source.charAt(i + 1) == 't'&& source.charAt(i + 2) == 'e' && source.charAt(i + 1) == 'r')
{
new_content += part;
}
}
return new_content;
}
public static void writeFile(File file, String filename, String text) throws IOException
{
Path path = file.toPath();
OutputStream os = null;
try
{
os = Files.newOutputStream(path, StandardOpenOption.CREATE_NEW);
os.write(text.getBytes("UTF-8"));
}
catch (IOException e)
{
close(os);
throw e;
}
}
public static void close(Closeable closeable)
{
try
{
closeable.close();
}
catch (IOException ignored)
{
}
}
}
Aber wenn ich versuche, es laufen zu lassen, kommt der hier in der Konsole:
Exception in thread "main" java.lang.NullPointerException
at JsonFileCreateHelper.close(JsonFileCreateHelper.java:158)
at JsonFileCreateHelper.readFile(JsonFileCreateHelper.java:115)
at JsonFileCreateHelper.createFile(JsonFileCreateHelper.java:60)
at JsonFileCreateHelper.main(JsonFileCreateHelper.java:49)
Könnt ihr mir helfen, den Fehler zu finden?
Es ist nichts im code rot unterstrichen.