我使用以下代码:
final File newFile = new File("/mnt/sdcard/test/");
newFile.mkdir(); // if I use mkdirs() result is the same
Run Code Online (Sandbox Code Playgroud)
它会创建一个空文件!为什么?
你们如何测试一个空的InputStream?我知道InputStream旨在使用远程资源,因此在您实际读取它之前,您无法知道它是否存在.我不能使用read(),因为当前位置会改变并使用mark()并重置,这似乎是不合适的.
问题是,有时人们无法测试read()是否返回-1,因为如果你有一个流而某些第三方库使用它,你需要在发送它之前测试它是否为空.
通过空的InputStreams我的意思是这些 new ByteArrayInputStream(new byte[0])
我尝试打开文件时收到此错误:
java.io.FileNotFoundException: D:\Portable%20Programs\Android%20Development\workspace3\XXX-desktop\bin\World_X.fr (The system cannot find the path specified)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(Unknown Source)
at java.util.Scanner.<init>(Unknown Source)
Run Code Online (Sandbox Code Playgroud)
该文件存在于目录中,但我仍然收到此错误.然而,当我复制相同的文件在Eclipse工作区项目src文件夹,没有这样的例外是返回(尽管这种方法也bin文件夹创建World_X.fr文件).
我实际上要做的是通过这个获取.jar文件的绝对位置:
fileLocation = new String(Main.class.getProtectionDomain().getCodeSource().getLocation().getPath());
Run Code Online (Sandbox Code Playgroud)
然后我将"World_X.fr"附加到fileLocation字符串,但这不起作用.请帮助我这方面.
我有一个文件,其中包含以下字符:"Joh 1:1ஆதியிலேஆதியிலேவாரதவாரததைதைதைஇருநஇருநஇருநததுததுததுததுததுததுததுததுததுததுததுததுததுததுததுததுததுததுததுததுததுததுததுததுததுததுததுததுததுததுததுததுததுததுததுததுததுததுததுததுததுததுததுததுததுததுததுததுததுததுததுததுததுததுததுதது"""""""""""""""""""""""".
www.unicode.org/charts/PDF/U0B80.pdf
当我使用以下代码时:
bufferedWriter = new BufferedWriter (new OutputStreamWriter(System.out, "UTF8"));
Run Code Online (Sandbox Code Playgroud)
输出是框和其他奇怪的字符,如下所示:
"P = O֛; <一条Yՠ;"
有人可以帮忙吗?
这些是完整的代码:
File f=new File("E:\\bible.docx");
Reader decoded=new InputStreamReader(new FileInputStream(f), StandardCharsets.UTF_8);
bufferedWriter = new BufferedWriter (new OutputStreamWriter(System.out, StandardCharsets.UTF_8));
char[] buffer = new char[1024];
int n;
StringBuilder build=new StringBuilder();
while(true){
n=decoded.read(buffer);
if(n<0){break;}
build.append(buffer,0,n);
bufferedWriter.write(buffer);
}
Run Code Online (Sandbox Code Playgroud)

StringBuilder值显示UTF字符,但在窗口中显示时,它显示为框.
找到问题的答案!!! 编码是正确的(即UTF-8)Java将文件读取为UTF-8,字符串字符为UTF-8,问题是在netbeans的输出面板中没有字体显示它.更改输出面板的字体(Netbeans-> tools-> options-> misc-> output选项卡)后,我得到了预期的结果.当它在JTextArea中显示时(需要更改字体),同样适用.但我们无法更改windows'cmd提示字体.
拥有这两种方法的IMO是多余的,真的不清楚!我不太明白为什么这两种方法都是在Files API中设计的?
如果文件确实存在,Files.exist(..)返回true,如果不存在或没有权限则返回false.那么为什么在地狱里有一个Files.notExist(..)??
Oracle Docs说!Files.exists(...)不等同于Files.notExists(...)!? 也许有些东西让我无法理解!
当存在exists()方法时,使用notExist()有什么好处?
我有一些临时文件,我打电话deleteOnExit()给.我也有一个可以运行的runnable,addShutdownHook()可以在System.exit调用时运行.
我的关机挂钩运行时是否保证临时文件仍然可用?
我看到了这个例子,但我没有看到close()在 上调用的方法InputStream,所以会prop.load()自动关闭流吗?或者示例中存在错误?
我正在使用 Spring boot 2.0.4,尝试读取放置在 resources/ 目录中的 json 文件,但收到“FileNotFoundException”。
我已经从 Stackoverflow 和其他链接引用了很多页面,但到目前为止还没有成功。
以下是堆栈跟踪片段,我不确定为什么会有“!” 在类路径中:
/opt/springboot/myProject.jar!/BOOT-INF/classes!/schema/jsonValidationSchema.json at o.s.u.ResourceUtils.getFile(ResourceUtils.java:217) at o.s.u.ResourceUtils.getFile(ResourceUtils.java:180)
Run Code Online (Sandbox Code Playgroud)
这是代码片段:
InputStream in = new ClassPathResource("jsonValidationSchema.json").getInputStream();
JsonNode schemaJsonNode = JsonLoader.fromReader(new InputStreamReader(in, "UTF-8"));
JsonSchema schemaNode = ValidationUtils.getSchemaNode(schemaJsonNode);
Run Code Online (Sandbox Code Playgroud)
参考:
https://smarterco.de/java-load-file-from-classpath-in-spring-boot/
我正在创建一个应用程序来测试File.listFiles()方法是否有效。为了检查这一点,我创建了一个应用程序并在那里使用了它,但是返回 null 代替了数组。这是我的完整代码请帮忙,我已授予 android 11 的所有权限
MainActivity.java
package com.rajkumarcreations.file;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.os.Environment;
import android.provider.Settings;
import android.widget.TextView;
import android.widget.Toast;
import org.w3c.dom.Text;
import java.io.File;
import static android.Manifest.permission.READ_EXTERNAL_STORAGE;
import static android.Manifest.permission.WRITE_EXTERNAL_STORAGE;
import static android.os.Build.VERSION.SDK_INT;
public class MainActivity extends AppCompatActivity {
TextView tv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv = (TextView) findViewById(R.id.btn);
if(!checkPermission()){
requestPermission();
}else{
File file = new File(Environment.getExternalStorageDirectory()+"/Download/");
File[] allfiles …Run Code Online (Sandbox Code Playgroud) 在 Java 中,我们如何将字节数组写入文件(并从该文件中读回)?
是的,我们都知道已经有很多这样的问题,但由于完成这项任务的方法有很多,所以它们变得非常混乱和主观。
因此,让我们缩小问题的范围:
领域:
我们想要什么:
我们没有做什么:
(因此,这排除了Apache Commons、Google Guava、Java.nio,并给我们留下了很好的 ol' Java.io)
我们需要的:
在我的特定情况下,这些方法是私有的(不是库),并且不负责以下内容,(但如果您想创建适用于更广泛受众的更通用的解决方案,那就去做吧):
所以......我们正在寻找最终的防弹代码,未来的人们可以认为可以安全使用,因为你的答案有很多赞成票,并且没有评论说,“这可能会崩溃如果...”
这是我到目前为止所拥有的:
将字节写入文件:
private void writeBytesToFile(final File file, final byte[] data) {
try {
FileOutputStream fos = new FileOutputStream(file);
fos.write(data);
fos.close();
} catch (Exception e) {
Log.i("XXX", "BUG: " + e);
}
}
Run Code Online (Sandbox Code Playgroud)
从文件中读取字节: …
java-io ×10
java ×8
android ×3
inputstream ×2
android-11 ×1
api ×1
arrays ×1
file ×1
java-api ×1
properties ×1
spring ×1
spring-boot ×1