我必须使用一个签名就像这样的方法
aMethod(FileInputStream);
我称这种方法为
FileInputStream inputStream = new FileInputStream(someTextFile);
aMethod(inputStream);
我想删除/编辑从someTextFile读取的一些char,然后将其传递到aMethod(inputStream)
;
我无法更改aMethod的签名或超载它。而且,它只需要一个InputStream。 如果方法将字符串作为参数,那么我就不会问这个问题了。
我是InputStream noob。请指教。
答案 0 :(得分:1)
您可以将字符串转换为输入流
String str = "Converted stuff from reading the other inputfile and modifying it";
InputStream is = new ByteArrayInputStream(str.getBytes());
答案 1 :(得分:1)
这可能会有所帮助。它将获取您的.txt文件。然后它将加载它并逐行进行。你必须填写注释区域才能做你想做的事。
public void parseFile() {
String inputLine;
String filename = "YOURFILE.txt";
Thread thisThread = Thread.currentThread();
ClassLoader loader = thisThread.getContextClassLoader();
InputStream is = loader.getResourceAsStream(filename);
try {
FileWriter fstream = new FileWriter("path/to/NEWFILE.txt");
BufferedWriter out = new BufferedWriter(fstream);
BufferedReader reader = new BufferedReader(
new InputStreamReader(is));
while((inputLine = reader.readLine()) != null) {
String[] str = inputLine.split("\t");
if(/* IF WHAT YOU WANT IS IN THE FILE ADD IT */) {
// DO SOMETHING OR ADD WHAT YOU WANT
out.append(str);
out.newLine();
}
}
reader.close();
out.close();
} catch (Exception e) {
e.getMessage();
}
}
答案 2 :(得分:1)
您是否查看了另一个课程FilterInputStream
,该课程还扩展了InputStream
,可能符合您的要求?
从课程的文档
FilterInputStream包含一些其他输入流,它将其用作其基本数据源,可能会沿途转换数据或提供其他功能。
另请查看this问题,该问题似乎与您的问题类似。